Python-rq with flask + uwsgi + Nginx:我需要更多的 uwsgi 进程或 redis worker 吗?

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

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

在 Redis 中排队作业

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

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

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

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

my startup script

my worker code

这取决于您 运行 rq 的工作方式。可以有两种情况

1) 运行 来自应用程序内部的 rq workers。然后在 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 时遇到的另一个问题是 rq-workers 运行 通过第 1 点策略从 rq 中注销自己,即对于 rq 来说已经死了,尽管 运行 在几周的时间间隔内在后台。