2011-10-07 19 views
3

當我嘗試重試失敗的任務時,我間歇地(大約20%的時間)從Celery獲取IOError異常。重試任務時拋出IOError的芹菜

這是我的任務:

@task 
def update_data(pk_id): 
    try: 
     pk = PK.objects.get(pk=pk_id) 
     results = pk.get_update() 
     return results 
    except urllib2.HTTPError, exc: 
     print "Let's retry in a few minutes." 
     update_data.retry(exc=exc, countdown=600) 

例外:

[2011-10-07 11:35:53,594: ERROR/MainProcess] Task report.tasks.update_data[1babd4e3-45eb-4fa3-a497-68b67bb4a6df] raised exception: IOError() 
Traceback (most recent call last): 
    File "/home/prj/prj_env/lib/python2.6/site-packages/celery/execute/trace.py", line 36, in trace 
    return cls(states.SUCCESS, retval=fun(*args, **kwargs)) 
    File "/home/prj/prj_env/lib/python2.6/site-packages/celery/app/task/__init__.py", line 232, in __call__ 
    return self.run(*args, **kwargs) 
    File "/home/prj/prj_env/lib/python2.6/site-packages/celery/app/__init__.py", line 172, in run 
    return fun(*args, **kwargs) 
    File "/home/prj/prj/report/tasks.py", line 109, in update_data 
    update_data.retry(exc=exc, countdown=600) 
    File "/home/prj/prj_env/lib/python2.6/site-packages/celery/app/task/__init__.py", line 520, in retry 
    self.name, options["task_id"], args, kwargs)) 
HTTPError 

RabbitMQ的日誌

=INFO REPORT==== 7-Oct-2011::15:35:43 === 
closing TCP connection <0.4294.17> from 10.254.122.225:59704 

=WARNING REPORT==== 7-Oct-2011::15:35:43 === 
exception on TCP connection <0.4330.17> from 10.254.122.225:59715 
connection_closed_abruptly 

=INFO REPORT==== 7-Oct-2011::15:35:43 === 
closing TCP connection <0.4330.17> from 10.254.122.225:59715 

=WARNING REPORT==== 7-Oct-2011::15:35:49 === 
exception on TCP connection <0.4313.17> from 10.254.122.225:59709 
connection_closed_abruptly 

=INFO REPORT==== 7-Oct-2011::15:35:49 === 
closing TCP connection <0.4313.17> from 10.254.122.225:59709 

=WARNING REPORT==== 7-Oct-2011::15:35:49 === 
exception on TCP connection <0.4350.17> from 10.254.122.225:59720 
connection_closed_abruptly 

=INFO REPORT==== 7-Oct-2011::15:35:49 === 
closing TCP connection <0.4350.17> from 10.254.122.225:59720 

=INFO REPORT==== 7-Oct-2011::15:36:22 === 
accepted TCP connection on [::]:5672 from 10.255.199.63:50526 

=INFO REPORT==== 7-Oct-2011::15:36:22 === 
starting TCP connection <0.4501.17> from 10.255.199.63:50526 

任何想法,爲什麼這可能發生?

謝謝!

+0

看起來像是在提高'HTTPError',而不是'IOError'? – asksol

+0

@asksol我有同樣的問題,這是一個HTTP錯誤,但是,芹sends發送的電子郵件通知是:「Task some_task id 7e1d88a9-ef58-4b30-b523-c879d9e90402引發異常: 'IOError()'」 – armonge

回答

0

max_retries在芹菜是每默認3,因此,如果相同的任務連續失敗3次(即20%的時間),重試將重新拋出異常。