我有一个芹菜任务,其中最终是子句。我发现有时该子句没有执行。我认为这是在任务完成时发生的,看起来芹菜会杀死它。
,在芹菜任务后执行代码的最佳实践是什么?
这对任务成功不起作用,但是我可以使用现有的最终语句对此进行,并且只需在on_failure中调用清理代码,如果它也适用于超时。清理代码是基于的。
我考虑使用链条执行了将执行清理工作的新任务 - 但是第二任任务仅在第一个成功时执行。
我浏览了文档,找到了一个on_failure任务方法(请参阅https://gist.github.com/darklow/c70a8d1147f05be877c3(我可以骑行 - 但是我不能确定那是否按时执行吗?
简而
好吧,如果您担心超时,为什么不抓住softtimelimitexceeded
from celery.exceptions import SoftTimeLimitExceeded
@app.task(name='my_task', soft_time_limit=1000, time_limit=2000)
def my_task():
try:
do_stuff()
except SoftTimeLimitExceeded:
raise
finally:
do_some_cleanup.delay()