您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

重试celery任务并以指数方式退回

重试celery任务并以指数方式退回

task.request.retries属性包含到目前为止的尝试次数,因此您可以使用它来实现指数补偿:

from celery.task import task

@task(bind=True, max_retries=3)
def update_status(self, auth, status):
    try:
        Twitter(auth).update_status(status)
    except Twitter.WhaleFail as exc:
        self.retry(exc=exc, countdown=2 ** self.request.retries)

为防止雷电群问题,您可以考虑在指数补偿中添加随机抖动:

import random
self.retry(exc=exc, countdown=int(random.uniform(2, 4) ** self.request.retries))
其他 2022/1/1 18:51:43 有526人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶