Django通过一个脚本运行链(如果/在浏览器中打开,通过延迟方法调用1000个任务)产生多个芹菜任务。芹菜全部生成任务状态
如果在前面的脚本运行中排队的任务仍在运行,我需要一些能够限制新任务生成的内容。
Django通过一个脚本运行链(如果/在浏览器中打开,通过延迟方法调用1000个任务)产生多个芹菜任务。芹菜全部生成任务状态
如果在前面的脚本运行中排队的任务仍在运行,我需要一些能够限制新任务生成的内容。
你需要一个分布式锁,这是芹菜本身不提供的。
对于这些类型的锁,我发现redis.Lock
对大多数情况很有用。如果你需要一个信号量,你可以使用redis的atomic incr/decr函数以及某种看门狗机制来确保你的进程仍在运行。
可以通过设置限制在同一时间一种类型的运行的任务数:
rate_limit = “1000/m”
=> 1000个仅此类型的任务可以每分钟运行。 (见http://docs.celeryproject.org/en/latest/userguide/tasks.html#list-of-options)