2012-11-09 14 views
10

मैं वर्तमान में नौकरियों को असंकालिक रूप से संसाधित करने में देरी की नौकरी का उपयोग करता हूं। श्रमिकों को बनाने के बजाय, मैं .delay विधि का बहुत उपयोग करता हूं।एक ही समय में विलंबित नौकरियां और साइडकीक चलाएं

मैं Sidekiq ले जाना चाहते हैं, लेकिन मैं नौकरियों के भी कई प्रकार है, और यकीन है कि उन सभी को धागा सुरक्षित हैं नहीं कर सकता। तो मैं समानांतर में देरी नौकरी और साइडकीक को चलाने के लिए, और एक समय में एक प्रकार की नौकरी माइग्रेट करना चाहता हूं।

दोनों विलंबित नौकरी और Sidekiq प्रदान करता है .delay विधि के बाद से, मैं दोनों के बीच भेद कैसे कर सकते हैं? क्या कोई अन्य संभावित मुद्दे हैं?

उत्तर

22

Sidekiq 2.17.1 और उसके बाद रेल initializers में कहीं, फोन निम्नलिखित:

Sidekiq.hook_rails! 
Sidekiq.remove_delay! 

और आप होगा केवल sidekiq_delay तरीकों और इतने पर पहले से जुड़ा हुआ।

(official document)


Sidekiq के पुराने संस्करणों के लिए:

रखो config/initializers/sidekiq.rb

module Sidekiq::Extensions::Klass 
    alias :sidekiq_delay :delay 
    remove_method :delay 
    alias :sidekiq_delay_for :delay_for 
    remove_method :delay_for 
    alias :sidekiq_delay_until :delay_until 
    remove_method :delay_until 
end 

module Sidekiq::Extensions::ActiveRecord 
    alias :sidekiq_delay :delay 
    remove_method :delay 
    alias :sidekiq_delay_for :delay_for 
    remove_method :delay_for 
    alias :sidekiq_delay_until :delay_until 
    remove_method :delay_until 
end 

module Sidekiq::Extensions::ActionMailer 
    alias :sidekiq_delay :delay 
    remove_method :delay 
    alias :sidekiq_delay_for :delay_for 
    remove_method :delay_for 
    alias :sidekiq_delay_until :delay_until 
    remove_method :delay_until 
end 

में निम्नलिखित और फिर आप sidekiq_delay उपयोग कर सकते हैं Sidekiq में क़तार में, और delay फोन देरी नौकरी में कतार में।

+0

धन्यवाद यह वास्तव में मददगार है :): तुम सब करने की ज़रूरत config/initializers/sidekiq.rb

यह यहाँ वर्णित है को Sidekiq.remove_delay! जोड़ने है –

0

ऐसा लगता है Sidekiq mix-in है कि सभी वर्गों के लिए .delay तरीकों कहते है। 100% सुनिश्चित नहीं है कि यह कैसे व्यवहार करेगा लेकिन अगर delay आप उदाहरण स्तर पर प्रतिक्रिया दे रहे हैं तो इसका परिणाम हो सकता है।

मेरी सलाह काम प्रति sidekiq पुस्तकालय जोड़ने के लिए जब तक आप सभी आप इसे करने के नौकरियों स्थानांतरित कर दिया होगा। एक ही समय में दोनों पुस्तकालयों को शामिल करने से बचने के लिए, यदि संभव हो तो फिर से।

संबंधित मुद्दे