app.Task.retry()
重新执行。 retry
时,会发送与原始任务相同的ID发送一条消息,将该消息发送到原始任务的对列中。retry
的例子:app.Task.retry()
调用时会引发异常,在重试之后将无法访问任何代码。重试异常,并不是作为错误处理的,表示职程(Worker)需要重试任务,便于在启用结果后端时存储正确的任务状态。throw
设置为 False
可以避免该情况发生。bind
参数将允许访问 self
(任务类型实例)。exc
参数主要用传递日志和存储任务结果时的使用的异常信息。exception
和 traceback
都将在任务状态中可用(如果启用了结果后端)。max_retries
值,超出了重试的最大次数,则会重新引发当前的异常信息,但如果:exc
参数没有设置MaxRetriesExceededError
异常exc
参数值default_retry_delay
来进行设置的。默认时间为 3 分钟,延迟时间的单位是秒(类型可以为 int 或 float)。retry()
中的 countdown
参数来覆盖默认值。task()
装饰器中的 autoretry_for
参数进行自动重试任务:task()
中的 retry_kwargs
参数来指定 retry()
内部调用参数:try
... except
语句中包含的代码块一样:exponential backoff
,避免请求淹没服务。 Celery 的自动重试可以通过 retry_backoff
参数进行兼容:exponential backoff
会随机引入 jitter,最大延迟限制在10分钟,可以通过下面的选项进行自定义配置。exponential backoff
选项是,countdown
任务选项将由 Celery 的自动重试系统决定,字典中包含 countdown
会被忽略。exponential backoff
规则延迟。第一次重试延迟 1 秒,第二次重试延迟 2 秒,第三次延迟 4 秒,第四次延迟 8 秒,以此类推。(如果启用了 retry_jitter
会修改延迟值)。如果该选项设置为数字,则作为延迟因子,例如,该选项设置为 3,那么第一次重试将延迟 3 秒,第二次将延迟 6 秒,第三次延迟 12 秒,第四次延迟 24秒,以此类推。默认情况下,该选项设置为 False,自动重试不会延迟。retry_backoff
,该选项在任务自动重试之间设置以秒为单位的最大延迟。默认情况,该选项默认值为 600,即 10分钟。retry_backoff
计算的延迟作为最大值,实际的延迟值为一个介于 0 和最大值之间的一个随机数。默认情况下,该选项为 True。