शेड्यूल derived from a setting है, और इस प्रकार रनटाइम पर अपरिवर्तनीय प्रतीत होता है।
आप शायद Task ETAs का उपयोग करके जो कुछ भी ढूंढ रहे हैं उसे पूरा कर सकते हैं। यह गारंटी देता है कि आपका कार्य से पहले वांछित समय से पहले नहीं चलाएगा, लेकिन निर्दिष्ट समय पर कार्य को चलाने का वादा नहीं करता है- यदि नामित ईटीए में श्रमिकों को अधिभारित किया जाता है, तो कार्य बाद में चलाया जा सकता है।
कि प्रतिबंध कोई मुद्दा नहीं है, तो आप एक काम है जो पहले की तरह ही चल पाएंगे लिख सकते हैं:
@task
def mytask():
keep_running = # Boolean, should the task keep running?
if keep_running:
run_again = # calculate when to run again
mytask.apply_async(eta=run_again)
# ... do the stuff you came here to do ...
इस दृष्टिकोण का प्रमुख नकारात्मक पक्ष यह है कि आप कार्यों को याद करने के लिए taskstore पर भरोसा कर रहे हैं उड़ान में यदि उनमें से एक अगले को गोलीबारी करने से पहले विफल रहता है, तो कार्य फिर कभी नहीं चलेगा। यदि आपका ब्रोकर डिस्क पर नहीं रहता है और यह मर जाता है (इसके साथ सभी इन-फ्लाइट कार्यों को लेना), तो उनमें से कोई भी कार्य फिर से चलाएगा।
आप इन मुद्दों को किसी प्रकार के लेनदेन लॉगिंग और आवधिक "नानी" कार्य के साथ हल कर सकते हैं जिसका काम यह दोहराव वाले कार्यों को ढूंढना है जो एक असामयिक मौत की मृत्यु हो गई और उन्हें पुनर्जीवित कर दिया।
अगर मुझे आपके द्वारा वर्णित किए गए कार्यों को लागू करना पड़ा, तो मुझे लगता है कि मैं इस तरह से संपर्क करूंगा।
स्रोत
2011-08-24 10:17:18
हां, शेड्यूलर को गतिशील शेड्यूल के लिए अनुकूलित नहीं किया गया है, लेकिन आप ऊपर वर्णित अनुसार 'is_due' विधि के साथ अपनी' शेड्यूल 'को कार्यान्वित कर सकते हैं, कार्य को फिर से निर्धारित करने का विकल्प भी कई विकल्प है, लेकिन फिर आपको सुनिश्चित करें कि पहला कार्य हमेशा ट्रिगर होता है, जो इतना आसान नहीं है। एक अन्य विकल्प डेटाबेस शेड्यूलर का उपयोग django-celery में करना है, यह गतिशील शेड्यूल का समर्थन करता है, और इसका उपयोग Django परियोजनाओं के बाहर भी किया जा सकता है। इसके अलावा, अपने स्वयं के शेड्यूलर बनाना मुश्किल नहीं है। – asksol
@asksol, django-celery के लिए दस्तावेज खाली है।डेटाबेस शेड्यूलर का उपयोग करने के तरीके पर मैं कहां से पता लगा सकता हूं? – goh
@amateur ठीक है, प्रलेखन वास्तव में यहां दुर्लभ है: – asksol