2012-08-10 23 views
8

मैं एक काम है:अजवाइन कार्यकर्ता फिर से प्रयास करें बुला के बाद कार्य पुन: प्रयास नहीं करता है()

@celery.task(name='request_task',default_retry_delay=2,acks_late=True) 
    def request_task(data): 
     try: 
      if some_condition: 
       request_task.retry() 
     except Exception as e: 
      request_task.retry() 

मैं MongoDB दलाल और MongoDB परिणाम बैकएंड को सक्षम करने पर अजवाइन का उपयोग करें।

जब कार्य की पुनः प्रयास() विधि को सशर्त कथन से और न ही अपवाद को पकड़ने के बाद कहा जाता है, तो कार्य को पुनः प्रयास नहीं किया जाता है।

कार्यकर्ता टर्मिनल में

मैं इस तरह संदेश मिलता है:

[2012-08-10 19: 21: 54,909: जानकारी/MainProcess] टास्क request_task [badb3131-8964-41b5-90a7-245a8131e68d] पुनर्प्रयास : कार्य को

क्या गलत हो सकता है?

अद्यतन: अंत में, मैंने इस प्रश्न को हल नहीं किया और कार्य के अंदर लूप के दौरान उपयोग करना पड़ा, इसलिए मेरे कार्यों को कभी भी पुनः प्राप्त नहीं किया गया।

+0

आप किस सेलरी संस्करण का उपयोग कर रहे हैं? –

+0

@MauroRocco मैंने टाइम प्रश्न पर सेलरी 3.0.4 का इस्तेमाल किया था। मेरे पास संस्करण 3.0.4 और 3.0.5 में बग के साथ काम करने वाली कुछ विशेषताएं थीं लेकिन बाद के संस्करणों ने बहुत अच्छी तरह से काम किया। – user1039098

+0

इसे सुनकर खुशी हुई। अगर आप अपने आप को प्रश्न का उत्तर दे सकते हैं और संकल्प को बेहतर तरीके से समझा सकते हैं। –

उत्तर

1

आपको सेलेरी दस्तावेज़ों में पुनः प्रयास करने के लिए अनुभाग को पढ़ना चाहिए। http://celery.readthedocs.org/en/latest/userguide/tasks.html#retrying

ऐसा लगता है कि पुनः प्रयास करने के लिए, आपको एक पुनः प्रयास अपवाद उठाना होगा।

raise request_task.retry() 

ऐसा लगता है कि आपके कार्य को सजाए गए फ़ंक्शन द्वारा पुनः प्रयास किया जा सकता है।

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