为长时间运行的任务配置Python Celery

时间:2014-01-16 16:01:21

标签: 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

我在主服务器上旋转任务,检查未完成任务的结果并处理更新本地数据库以将任务标记为完成(并执行结果处理)。在这个阶段,我想我将不得不抓住'工人过早退出:信号15(SIGTERM)'场景并重试任务。

感觉这应该都是由芹菜处理的,所以我觉得我错过了配置中的一些基本信息。

鉴于幂等任务和工作人员将失败,配置芹菜的最佳方法是什么,以便这些任务被另一个工作人员接收?

0 个答案:

没有答案