芹菜任务的 finally 子句不执行,如何清理?



我有一个芹菜任务,其中最终是子句。我发现有时该子句没有执行。我认为这是在任务完成时发生的,看起来芹菜会杀死它。

,在芹菜任务后执行代码的最佳实践是什么?

这对任务成功不起作用,但是我可以使用现有的最终语句对此进行,并且只需在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()

相关内容

  • 没有找到相关文章

最新更新