如何限制在芹菜中运行的任务数量

时间:2018-01-16 14:38:23

标签: python heroku celery

我有一个在Heroku上运行的应用程序,我正在使用芹菜和工作器dyno来处理后台工作。

我正在运行使用大量内存的任务。这些任务大致在同一时间开始,但我希望只有一个或两个任务同时运行,其他任务必须在队列中等待。我怎样才能做到这一点?

如果它们同时运行,我的内存不足,系统重新启动。我知道为什么它使用大量内存而不是减少那个

1 个答案:

答案 0 :(得分:2)

非常简单:将并发(芹菜工作进程数)限制为可以在此服务器上并行安全运行的任务数。

请注意,如果你有不同的任务有不同的资源需求(即一个任务吃了很多ram并需要几分钟才能完成,而且有几个任务很快并且根本不需要太多资源)你可能会更好地使用两个不同的节点来服务它们(一个用于繁重的任务而另一个用于轻型任务),因此繁重的任务不会阻挡轻型任务。您可以使用队列将任务路由到不同的芹菜节点。