celery - Django/Celery:max_retries 用于重试,但打印值始终是 Celery 默认值 (3)
问题描述
@app.task(bind=True, autoretry_for=(Exception,), retry_kwargs={'max_retries': 10, 'countdown': 5})
def job_deliver_message(self, message_id):
print('Try {0}/{1}'.format(self.request.retries, self.max_retries))
...
...
...
为了测试,我故意导致此任务失败。它确实重试了 10 次!但是,打印输出如下:
[2020-06-03 19:14:06,700: WARNING/ForkPoolWorker-15] Try 0/3
[2020-06-03 19:14:12,080: WARNING/ForkPoolWorker-1] Try 1/3
[2020-06-03 19:14:17,553: WARNING/ForkPoolWorker-3] Try 2/3
[2020-06-03 19:14:23,000: WARNING/ForkPoolWorker-5] Try 3/3
[2020-06-03 19:14:28,489: WARNING/ForkPoolWorker-7] Try 4/3
[2020-06-03 19:14:33,603: WARNING/ForkPoolWorker-9] Try 5/3
[2020-06-03 19:14:39,038: WARNING/ForkPoolWorker-11] Try 6/3
[2020-06-03 19:14:44,525: WARNING/ForkPoolWorker-13] Try 7/3
[2020-06-03 19:14:49,688: WARNING/ForkPoolWorker-15] Try 8/3
[2020-06-03 19:14:54,985: WARNING/ForkPoolWorker-1] Try 9/3
[2020-06-03 19:14:54,985: WARNING/ForkPoolWorker-1] Try 10/3
我错过了什么?我是否max_retries
从错误的地方打印价值?
是的:我确实知道我可以只显示“10”......因为我明确设置了它......但只是想知道为什么它给我 3 时给了 10 并且实际上对它采取了重新的数量尝试...
解决方案
推荐阅读
- flutter - 在颤振中映射 CSV 数据
- python - 为什么通过 pygame.mixer 和声卡模块播放音频的方式不同?
- python - 尝试为迁移学习任务加载我自己的权重时出现 ValueError
- google-cloud-platform - 如何从谷歌云下载网站数据库?
- html - 在 12 格引导系统中是否需要为每个断点设计?
- go - 创建专用函数是处理错误的好方法吗
- excel - 如何为值范围和excel中的匹配条件执行If()
- javascript - 如何在 JavaScript 中创建 JSON 对象?
- python - 模块中定义的所有类的类型提示
- r - 使用 mutate()/case_when() 时出现奇怪的错误消息