首页 > 解决方案 > 对 Heroku WEB_CONCURRENCY 变量和 Celery --concurrency 之间的区别感到困惑

问题描述

我正在尝试使用 Celery 在 Heroku Flask 应用程序中运行后台任务。我想探索配置事物以允许 Celery 并行运行比默认行为允许的更多任务。

我的理解是,可以通过指定工作进程/线程的数量来使用 Celery --concurrency 选项。但是 Heroku 的 WEB_CONCURRENCY 环境变量是否也指定了相同的东西,或者至少是重叠/冲突的东西?

如果我同时设置 WEB_CONCURRENCY 和 --concurrency 会发生什么?它们是完全分开的东西,还是我应该只使用其中之一?

标签: herokuconcurrencycelery

解决方案


这是两个不同的东西,你需要分别对待它们。

WEB_CONCURRENCY只是heroku 基于 dyno-size 自动设置的设置,它更多的是 Heroku 的建议,您可能希望在一个特定大小的 dyno 上拥有多少个服务于 Web 请求的进程。根据您的服务器的 CPU 和内存要求,可能会有所不同

您再次选择哪种--concurrency芹菜取决于您的应用。虽然您可以从 开始1,或者从使用WEB_CONCURRENCY作为您的工作并发开始,但您肯定必须观察这些 dyno 上的负载和内存使用情况,看看您是否可以增加或必须减少该数字。


推荐阅读