2012-10-10 23 views
16

शुरू हो रही नहीं मैं अपने पृष्ठभूमि नौकरियों के लिए Sidekiq उपयोग कर रहा हूँ:Sidekiq कार्यकर्ता

मैं एक कार्यकर्ता एप्लिकेशन/कार्यकर्ताओं/data_import_worker.rb

class DataImportWorker 
include Sidekiq::Worker 
sidekiq_options retry: false 

    def perform(job_id,file_name) 
    begin 
    #Some logic in it ..... 
    end 
end 

एक फ़ाइल lib/parse_excel से कहा जाता है।

def parse_raw_data 
     #job_id and #filename are defined bfr 
     DataImportWorker.perform_async(job_id,filename) 
    end 

आरबी जैसे ही मैं अपने कार्रवाई worke से यह गति प्रदान के रूप में आर को बुलाया नहीं जा रहा है .. रेडिस localhost:6379

कोई विचार क्यों यह हो रहा है। पर्यावरण लिनक्स है।

+0

साइडकीक चल रहा है? लॉग में यह क्या कहता है? क्या आपने रेडिस की जांच की, क्या नौकरी कतार में जोड़ा गया है: डिफ़ॉल्ट? – Roman

+0

@Roman: उत्तर के लिए धन्यवाद! हाँ sidekiq और redis दोनों चल रहे हैं .. नौकरी डिफ़ॉल्ट कतार में भी नहीं जोड़ा जा रहा है ... लेकिन जब मैं कंसोल से नौकरी ट्रिगर करता हूं तो यह – AnkitG

+0

काम करता है शायद आपके पास विकास और उत्पादन में चलते समय अलग-अलग डेटाबेस या नामस्थान हैं। या एक अलग कतार स्थापित है। – Roman

उत्तर

28

मैं एक ऐसी ही समस्या थी के लिए मौजूदा श्रमिकों को देखने के लिए सक्षम हो जाएगा जहां Sidekiq था चल रहा, लेकिन जब मैंने perform_async कहा है, यह true को छोड़कर कुछ भी नहीं किया। ": विकास,: परीक्षण" समूह

समस्या rspec-sidekiq करने के लिए मेरे जोड़ दिया गया था। मैंने rspec-sidekiq को ": परीक्षण" समूह में स्थानांतरित करके समस्या को ठीक किया।

+1

यह मेरे मामले में समान समस्या थी – AnkitG

+1

मेरे पास एक ही सटीक समस्या थी। मुझे अपने बंडल को भी पुनर्निर्माण करना पड़ा: 'बंडल इंस्टॉल - परीक्षण के बिना' – keaplogik

+3

मैंने https://github.com/mperham/sidekiq/wiki/Problems-and- समस्या निवारण#the-workers- पर इस उत्तर का एक लिंक जोड़ा। भविष्य के संदर्भ – lkartono

1

मुझे एक ही समस्या का सामना करना पड़ता है, यह पता चला है कि मैंने निष्पादन में पारित तर्क निष्पादन_async उचित नहीं है, ऐसा लगता है कि किसी को perform_async में कोई क्वेरी परिणाम नहीं पारित करना चाहिए, आपको फ़ंक्शन में सभी क्वेरी करना होगा प्रदर्शन करते हैं।

2

आपको उस कतार का नाम निर्दिष्ट करने की आवश्यकता है जिसके लिए कार्यकर्ता है।

उदाहरण: sidekiq_options पुन: प्रयास: झूठे, : कतार => data_import_worker

data_import_worker किसी भी नाम आप इसे देना चाहता हूँ हो सकता है।

फिर आप वेब इंटरफेस के लिए जाना जब: yoursite.com/sidekiq, आप कतार "data_import_worker"

0

मेरी समस्या में केवल गलत पथ में कार्यकर्ता फ़ाइल थी।

आवश्यकताओं "project_root/ऐप्स/कार्यकर्ता/worker.rb", नहीं "project_root/कार्यकर्ता/worker.rb"

में होने की फ़ाइल पथ की जाँच करें!

+2

/ऐप/कर्मचारी निश्चित रूप से (बहुवचन) – mahemoff

6

अपने रेल ऐप की मूल निर्देशिका से साइडकीक प्रारंभ करें। उदाहरण के लिए,

बंडल कार्यकारी -e मचान sidekiq -सी config/sidekiq.yml

0

यह वास्तव में स्टैंडअलोन sidekiq पर एक से अधिक श्रमिकों को चलाने है? ProccessWorker CallbackWorker

जब मैं कर रहा हूँ runnigs sidekiq: बंडल कार्यकारी sidekiq -r ./workers/proccess_worker.rb -सी ./config/sidekiq उदाहरण के लिए मैं 2 श्रमिकों की है।yml

एक ही समय में केवल एक ही कार्यकर्ता।

1

मेरे लिए perform_later करते समय, यह enqueue लेकिन कतार से कभी नहीं हटा होगा। मैं sidekiq.yml फ़ाइल

--- 
:concurrency: 25 
:pidfile: ./tmp/pids/sidekiq.pid 
:logfile: ./log/sidekiq.log 
:queues: 
    - default 
    - my_queue 
0

मैं एक उत्पादन कंसोल में perform_async(23) बुला रहा था मेरी कतार नाम जोड़ने के लिए की जरूरत है, लेकिन मेरी sidekiq मचान मोड में शुरू किया गया था।

उत्पादन मोड में साइडकीक शुरू करने के बाद, चीजें बहुत अच्छी तरह से काम करना शुरू कर दी हैं।

1

इस पर एक अच्छा 15 मिनट खो दिया। यह जांचने के लिए कि क्या साइडकीक आपकी कॉन्फ़िगरेशन फ़ाइल (कतारों के नामों के साथ) को सही तरीके से लोड कर रहा है, व्यस्त टैब में वेब इंटरफ़ेस पर जाएं और आपको अपनी प्रोसेस आईडी मिलेगी और इसके नीचे आपको अपनी कतार मिल जाएगी।

हमारे मामले में, हमने mailer गलत वर्तनी की थी (मेलर्स के लिए सही ActiveJob कतार mailers है, बहुवचन में)।

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