首页 > 解决方案 > 在具有单个 CPU 的机器上在单个 celery worker 中运行多个进程

问题描述

我正在研究 Celery 作为我的烧瓶应用程序的后台工作人员。该应用程序托管在 Linode 平台上的共享 linux 服务器上(我不太确定这意味着什么)。描述说服务器有 1 个 CPU 和 2GB RAM。我读到一个芹菜工人在它下面启动工作进程,它们的数量等于机器上的核心数量——在我的例子中是 1。

我会遇到用户要求运行多个后台作业的情况。它们都将被放置在一个 redis/rabbitmq 队列中(尚未决定)。因此,如果我以大于 1 的并发性(例如--concurrency 4)启动 Celery,那么它会有用吗?或者在这种情况下其他工作人员会因为我只有一个 CPU 而无用吗?

这些任务主要是关于从谷歌表格和应用程序数据库中读取信息。这些交互有时会变得很繁重,大约需要 5-15 分钟。基于此,上述问题的答案是否会改变,因为有时可能没有使用 cpu?

对此的任何帮助都会很好,因为我不希望一份工作一直等待前一份工作完成才能开始,或者唯一的解决方案是花钱买一台更好的机器?

谢谢

标签: pythoncelery

解决方案


这是一种常见的情况,所以不要担心。如果您的任务不是 CPU 繁重,您总是可以像您计划的那样过度使用。如果他们所做的只是 I/O,那么您甚至可以选择比 4 更高的数字,并且一切正常。


推荐阅读