2015-01-14 70 views
2

在芹菜中我如何跟蹤當前的重試?我知道我可以做這樣的事情:如何跟蹤芹菜中的重試

@app.task(bind=True, default_retry_delay=900, max_retries=5) 
def send_email(self, sender=None, to=None, subject=None, message=None): 
    try: 
    # Send email 
    except Exception as e: 
    # Print log message with current retry 
    self.retry(e) 

但我想說這是嘗試1/5..2/5等等。

回答

3

您可以從任務的request.retries屬性中訪問當前重試次數。

@app.task(retries=4, default_retry_delay=1) 
def fail(): 
    try: 
     assert False 
    except Exception as e: 
     print 'Try {0}/{1}'.format(fail.request.retries, fail.max_retries) 
     # Print log message with current retry 
     raise fail.retry(exc=e) 


[2015-01-14 15:15:55,702: WARNING/Worker-1] Try 0/3 
[2015-01-14 15:15:58,604: WARNING/Worker-3] Try 1/3 
[2015-01-14 15:16:00,605: WARNING/Worker-2] Try 2/3 
[2015-01-14 15:16:02,607: WARNING/Worker-6] Try 3/3 

芹菜採用了類似的方法在內部:https://github.com/celery/celery/blob/b0cfa0d818743262a032c541cce2fa8c43fabad4/celery/app/task.py#L558

+0

感謝garnertb! –