Python-rq with flask + uwsgi + Nginx : Do I need more uwsgi processes or redis workers?

标签 python flask redis uwsgi python-rq

我有一台具有上述配置的服务器,我正在处理很长的任务,但我必须通过 Firebase 向用户更新进程状态。为了立即响应客户端,我使用 python-rq 在 redis 中排队作业。

我正在使用 flask、uwsgi 和 Nginx。在 uwsgi conf 文件中,有一个字段询问进程数。 我的问题是,我需要启动多个 uwsgi 进程,还是更多的 redis worker?

启动更多 uwsgi worker 是否会创建更多 redis worker?

扩展如何工作,我的服务器有 1 个 vCPU 和 2GB 内存。我有用于生产的 aws 自动缩放。我应该运行更多的 uWsgi worker 还是只用一个队列运行多少个 redis worker。

我正在独立启动 worker。 Flask 应用正在导入连接并添加作业。

my startup script

my worker code

最佳答案

这取决于您如何运行 rq worker。可以有两种情况

1) 从应用程序内部运行 rq worker。然后在 uwsgi 设置中增加工作人员数量将自动生成 num_rq_workers_in_app_conf * num_app_workers_in_uwsgi_conf

2) 在应用程序外部运行 rq worker,例如使用 supervisord。您可以在其中独立于应用程序手动控制 rq worker 的数量。

根据我的说法,在 supervisord 下运行 rq workers 是比第 1 点更好的选择。它有助于有效调试每个 worker,我在使用 rq 时遇到的另一个问题是通过第 1 点策略运行的 rq-workers 取消注册他们自己来自 rq,即尽管在几周的间隔内在后台运行,但对于 rq 来说已经死了。

关于Python-rq with flask + uwsgi + Nginx : Do I need more uwsgi processes or redis workers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44870551/

相关文章:

python - 是否可以在服务器端的 Flask 中动态更新呈现的模板?

python - 定期或在事件触发时执行函数

redis - 使用多个过滤器创建可行的 Redis 存储

python - 在 Windows 10/Pycharm 中使用 Vagrant 从 Python 调用 FastDownward planner

python-2.7 - 跨源资源共享多个站点

concurrency - Redis BITSET 和 WATCH

python - 寻找 : nosql (redis/mongodb) based event logging for Django

python - 如何反转 Plotly Express map 中的色阶?

python - 在 Twisted 和 Django 之间共享数据库

python - 解码 NumPy int64 二进制表示