2012-02-27 15 views
15

मैं अजवाइन के साथ पुनर्प्रयास कर डॉक्स-उदाहरण की तरह:बढ़ाएँ अजवाइन पुन: प्रयास करें समय प्रत्येक फिर से प्रयास करें चक्र

@task() 
def add(x, y): 
    try: 
     ... 
    except Exception, exc: 
     add.retry(exc=exc, countdown=60) # override the default and 
              # retry in 1 minute 

मैं कैसे पुन: प्रयास करें-उलटी गिनती बढ़ा सकते हैं हर पुन: प्रयास करें इस काम के लिए होता है - जैसे 60 सेकंड, 2 मिनट, 4 मिनट और इतने पर जब तक MaxRetriesExceeded उठाया नहीं जाता है?

+1

मुझे लगता है कि आपके द्वारा चयनित जवाब बदलना चाहिए। – guival

उत्तर

28

प्रत्येक बार कार्य का मूल्यांकन होने पर बड़ी देरी बनाने का एक आसान तरीका है। यह मान खुद को अजवाइन द्वारा अद्यतन किया जाता है ताकि आपको स्वयं को कुछ भी प्रबंधित करने की आवश्यकता न हो।

@task() 
def add(x, y): 
    try: 
     ... 
    except Exception as exc: 
     raise add.retry(exc=exc, countdown=60 * add.request.retries) 

नोट: पहला कार्य 0 की उलटी गिनती के साथ दोहराया जाता है क्योंकि पहले रन के लिए रीट्रीज़ की संख्या 0 होती है।

+0

धन्यवाद .request.retries * – Kaveh

7

हर बार 2 से उस में अपने पिछले पुन: प्रयास करें समय के साथ एक चर रखें, और गुणा यह जब तक यह अधिक है ऐसे किसी भी स्तर आप चाहते हैं (या, यदि आप समय की एक निश्चित संख्या में पसंद करते हैं एक गणना ...)

+0

तो वहाँ कोई सुरुचिपूर्ण/जादू ऐसा करने के लिए बजाय हर पुन: प्रयास पर विधि के लिए एक पुनः प्रयास द-काउंटर पास करने का तरीका है? – Gregor

+0

मैं अजवाइन के साथ अपर्याप्त परिचित हूँ, लेकिन यदि आप मैन्युअल पढ़ा है और यह नहीं मिला है, यह है कि क्या आप जो आसान पर्याप्त लगता है कोड के केवल दो या तीन लाइनों, के साथ चाहते हैं पूरा करने के लिए एक आसान तरीका की तरह लगता है। – Perry

+0

@ ग्रेगोर, मुझे लगता है कि यह सुरुचिपूर्ण है, लेकिन शायद हम एक retry_step भी जोड़ सकते हैं। आप ऐसी सुविधा का अनुरोध करने के लिए http://github.com/ask/issue पर कोई समस्या बना सकते हैं। – asksol

0

version 4.2 चूंकि आप इस प्रयोजनों के लिए autoretry_for और retry_backoff विकल्पों का उपयोग कर सकते हैं, उदाहरण के लिए:

@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60) 
def add(x, y): 
    pass 
संबंधित मुद्दे