作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 Celery 中,如果出现异常,您可以重试
任何任务。你可以这样做:
@task(max_retries=5)
def div(a, b):
try:
return a / b
except ZeroDivisionError, exc:
raise div.retry(exc=exc)
在这种情况下,如果你想除以零,任务将被重新执行五次。但是您必须显式检查代码中的错误。如果您跳过 try-except
block ,任务将不会重新启动。
我希望我的函数看起来像:
@celery.task(autoretry_on=ZeroDivisionError, max_retries=5)
def div(a, b):
return a / b
最佳答案
Celery(从 4.0 版开始)正是您要找的东西:
@app.task(autoretry_for=(SomeException,))
def my_task():
...
参见:http://docs.celeryproject.org/en/latest/userguide/tasks.html#automatic-retry-for-known-exceptions
关于python - 如何为 Celery 任务实现自动重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979655/
我是一名优秀的程序员,十分优秀!