Aid*_*ane 5 python celery celeryd
我有一个设置,我在AWS现场实例上运行长幂等任务但我无法弄清楚如何设置Celery以优雅地处理在任务中被杀的工人.
目前,如果一名工人被杀,该任务将被标记为失败(WorkerLostError).我发现有关该主题的文档有点精简,但它表明您应该在此方案中使用CELERY_ACKS_LATE.这对我不起作用,任务仍然标记为失败.
当我有CELERY_ACKS_LATE = False时,任务就像PENDING一样停滞不前 - 所以至少现在我可以说它失败了 - 这是一个好的开始.
以下是我的配置设置:
# I'm using rabbit-mq as the broker
BROKER_HEARTBEAT = 10
CELERY_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1
CELERY_TRACK_STARTED = True
Run Code Online (Sandbox Code Playgroud)
我有一个任务在主服务器上旋转,检查未完成任务的结果并处理更新我的本地数据库以将任务标记为完成(并执行结果处理).在这个阶段,我想我将不得不抓住'工人过早退出:信号15(SIGTERM)'场景并重试任务.
感觉这应该全部由芹菜处理,所以我觉得我错过了我的配置中的一些基本内容.
鉴于幂等任务和失败的工作人员,配置芹菜的最佳方法是什么,以便这些任务由不同的工作人员接收?
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |