2

我有一个 celery 任务,它进行子进程调用,只能在系统范围内并行运行。虽然我想出了一个更好的解决方案,但我需要能够执行在单个工作人员上串行运行的任务。

我知道我可以创建一个表来跟踪当前正在运行任务的服务器,并等待它完成,然后再运行未来的任务,但似乎必须有更好的方法。我已经非常广泛地查看了 celery 文档,并简要地查看了 rabbitmq 文档,但无济于事。

有没有人想出一个优雅的解决方案来解决这个问题,并与上述技术的一些隐藏特性挂钩?

4

1 回答 1

2

如果你在 django 中设置一个数据库缓存,它使用所有服务器通用的数据库,你可以实现这个celery 食谱解决方案来一次执行一个任务。而不是使用变量lock_id,只需使用常量。

如果锁对执行任务的工作人员不可用,请调用重试将任务放回队列中。

于 2012-08-22T08:08:48.420 回答