0

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

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

启动更多的 uwsgi 工作人员会创建更多的 redis 工作人员吗?

缩放将如何工作,我的服务器有 1 个 vCPU 和 2GB 内存。我有用于生产的 aws 自动缩放。我是否应该运行更多的 uWsgi 工作人员以及只有一个队列的 redis 工作人员数量。

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

我的启动脚本

我的工人代码

4

1 回答 1

1

这取决于您如何运行 rq 工作人员。可能有两种情况

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

2)像使用supervisord一样在应用程序之外运行rq worker。您可以在其中手动控制独立于应用程序的 rq 工作人员的数量。

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

于 2017-07-02T12:21:51.733 回答