2017-07-02 48 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工作人員。 –