运行 单个 celery worker 在一台机器上的多个进程 CPU

Run multiple processes in single celery worker on a machine with single CPU

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

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

任务主要是从 google 工作表和应用程序数据库读取信息。这些交互有时会变得很繁重,大约需要 5-15 分钟。基于此,上述问题的答案是否会发生变化,因为有时 cpu 未被利用?

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

谢谢

这是常见的情况,所以请不要担心。如果您的任务不 CPU 繁重,您可以随时按计划过度使用。如果他们所做的只是 I/O,那么您甚至可以选择比 4 更高的数字,一切都会正常工作。