celery - Celery 活动任务持久化
问题描述
如果 celery 在执行某个任务时崩溃,重启 celery 后该任务丢失。崩溃时队列中的任务将在 RabbitMQ 中恢复正常。但是我怎样才能使活动任务持久化呢?
解决方案
Celery 默认配置为task_acks_late=False
. [1] 这意味着一旦工作人员从队列中接收到任务,任务就会被确认。而如果任务失败,队列也无从知晓。
设置task_acks_late
为True
,任务将在处理后被确认。当任务失败时,它被重新排队。[2] 但要小心,你的任务必须是幂等的。[3]
推荐阅读
- git - 如何不提取提交的文件?
- ruby - 如何在 Rails 迁移中更新现有参考的选项
- java - https调用在直接从java调用时工作,但不能从oracle 12c内部工作
- python - 从 Github 导入模块以在 Python 中使用
- python - Python:我如何仅打印以特定字符开头的特定字符串?
- c++ - 如何让我的程序在对二维数组中的行进行排序时交换列?
- c++ - 在c ++中嵌入八度音 - 如何传递可变大小的向量
- ios - 在使用 PDFKit 打印到 PDF 之前调整 UIImage 的大小 – Swift/Xcode
- amazon-web-services - 如何使用 AWS CLI 或 boto3 倒回 AWS 粘合作业书签
- c - 我必须在 Xlib 中 XFree 显示指针吗?