2017-07-02 71 views
0

我有一个具有上述配置的服务器,我正在处理长时间的任务,但我必须更新用户关于进程状态的信息,这是我通过Firebase执行的操作。为了立即响应客户端,我使用python-rq将作业排入redis。python-rq with flask + uwsgi + Nginx:我需要更多的uwsgi进程或redis工作者吗?

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

启动更多uwsgi工人是否会创建更多的redis工作者?

扩展如何工作,我的服务器有1个vCPU和2GB RAM。我对自动生产进行了缩减。我应该运行更多的uWsgi工作人员和多少个只有一个队列的redis工作人员。

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

my startup script

my worker code

回答

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时遇到的另外一个问题是rq-workers通过第1点策略尽管在几周的时间间隔内在后台运行,但rq从rq注销自己,即rq已经死亡。

+0

谢谢。我在外面(独立)启动一名工作人员这里有一个要点:https://gist.github.com/codeAshu/11d1e3a981e83a0275db42bd6379900f 这里是我的启动脚本https://gist.github.com/codeAshu/3b71b689041654d323a652d2f520fabc – Rusty

+0

我的服务器有1个vCPU和2GB RAM。我对自动生产进行了缩减。我应该运行更多的uWsgi工作人员和多少个只有一个队列的redis工作人员。 – Rusty

+0

这基本上取决于您获得服务的请求负载。越来越多的uwsgi工作人员将增加您的应用程序可用性,并且增加rq工作人员导致增加的并行处理,即如果您不关心工作处理和工作排队时间,则无需增加rq工作人员。 –