2012-03-13 9 views
19

मैं रेल 2.3.8 के लिए collectiveidea का उपयोग कर रहा हूं। मैं पर देरी की नौकरियों की सरणी बना रहा हूं कुछ कार्यों के बाद, कुछ समय बाद मैं चल रही सभी देरी वाली नौकरियों को नष्ट करना चाहता हूं। अगर कोई ऐसा करने का तरीका जानता है तो कृपया मेरी मदद करें।रेलों में सभी देरी हुई नौकरी को नष्ट करना

उत्तर

50

आप केवल यह बाहर काम करने के delayed_job GitHub page के लिए README पढ़ने के लिए था:

आप रेक नौकरियों आह्वान कर सकते हैं: कतार में सभी नौकरियों को हटाने के लिए स्पष्ट।

+2

यह ओपी से क्या नहीं करता है। वह चल रही नौकरियों को मारने की कोशिश कर रहा है, कतार को साफ़ नहीं करता है। – volx757

35

रेक कार्य के अलावा, DelayedJob नौकरियों सिर्फ एक सामान्य ActiveRecord मॉडल हैं, इसलिए यदि आप रूबी कोड में वही हैं जो आप आप उनके साथ की तरह कर सकते हैं:

Delayed::Job.destroy_all 
Delayed::Job.delete_all 
Delayed::Job.find(4).destroy 
# etc. 
+0

क्या आप कृपया देरी से विस्तृत कर सकते हैं :: Job.find (4) .destroy – codeit

+1

@clickit यह आईडी 4 की देरी वाली नौकरी को नष्ट कर देता है। – lulalala

+1

क्या 'नष्ट' और 'हटाएं' के बीच कोई अंतर है? –

0

आप की तरह लगता है ' एक माता-पिता की प्रक्रिया है जो समय-समय पर काम करना चाहती है यदि नौकरियों का सेट निश्चित समय के भीतर पूरा नहीं होता है। खुद को नौकरियों के संदर्भ में लटकने के बजाय, एक मॉडल पर ध्वज सेट करें जो इंगित करता है कि प्रक्रिया छोड़ दी गई है। नौकरियां उस ध्वज और शॉर्ट सर्किट की जांच कर सकती हैं अगर उन्हें अब और आवश्यकता नहीं है। (आपकी नौकरी कक्षा को टाइमआउट में अपनी #perform विधि की सामग्री को भी लपेटना चाहिए।)

डीजे ऑब्जेक्ट्स के संदर्भों पर लटकने का प्रयास करना लगभग हमेशा एक बुरा विचार है जैसा कि आप सुझाव दे रहे हैं।

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