1

Django在一个脚本运行中通过链产生多个Celery任务(fe如果/在浏览器中打开,1000个任务被延迟方法调用)。

如果在先前脚本运行中排队的任务仍在运行,我需要一些限制新任务生成的东西。

4

2 回答 2

0

您可以通过设置限制同时运行的一种类型的任务数量:

rate_limit = “1000/m” 

=> 这种类型的任务每分钟只能运行 1000 个。(见http://docs.celeryproject.org/en/latest/userguide/tasks.html#list-of-options

于 2013-10-12T23:50:39.173 回答
0

为此,您需要一个分布式锁,而 celery 本身并不提供这种锁。

对于这些类型的锁,我发现redis.Lock大多数情况下都很有用。如果你需要一个信号量,你可以使用 redis 的原子 incr/decr 函数以及某种看门狗机制来确保你的进程仍在运行。

于 2013-10-01T20:54:10.587 回答