python - 在具有单个 CPU 的机器上在单个 celery worker 中运行多个进程
问题描述
我正在研究 Celery 作为我的烧瓶应用程序的后台工作人员。该应用程序托管在 Linode 平台上的共享 linux 服务器上(我不太确定这意味着什么)。描述说服务器有 1 个 CPU 和 2GB RAM。我读到一个芹菜工人在它下面启动工作进程,它们的数量等于机器上的核心数量——在我的例子中是 1。
我会遇到用户要求运行多个后台作业的情况。它们都将被放置在一个 redis/rabbitmq 队列中(尚未决定)。因此,如果我以大于 1 的并发性(例如--concurrency 4
)启动 Celery,那么它会有用吗?或者在这种情况下其他工作人员会因为我只有一个 CPU 而无用吗?
这些任务主要是关于从谷歌表格和应用程序数据库中读取信息。这些交互有时会变得很繁重,大约需要 5-15 分钟。基于此,上述问题的答案是否会改变,因为有时可能没有使用 cpu?
对此的任何帮助都会很好,因为我不希望一份工作一直等待前一份工作完成才能开始,或者唯一的解决方案是花钱买一台更好的机器?
谢谢
解决方案
这是一种常见的情况,所以不要担心。如果您的任务不是 CPU 繁重,您总是可以像您计划的那样过度使用。如果他们所做的只是 I/O,那么您甚至可以选择比 4 更高的数字,并且一切正常。
推荐阅读
- php - 如何使用 PHP 创建 React Native 登录并包含登录会话?
- php - 更改 Woocommerce 帐单地址字段中的字段宽度
- python - 烧瓶中的蓝图不起作用,错误 404。我做错了什么?
- python - 无法导入 flask_login
- python - 如何在 python 中对 .csv 文件进行排序?
- angular - 如何在 NGXS 中为嵌套数组规范化和建模状态?
- c# - .NET Core 添加包 - 证书无效
- numpy - 在 numpy/tensorflow 中向量化具有不同形状的矩阵的乘法
- visual-studio-2019 - 在 Visual Studio 2019 中调试 ASP.NET Core 3 时 System.Reflection.MethodBase.Invoke 中的问题
- c# - UWP - 执行长视图模型创建并保持 UI 响应