2017-07-02 10 views
0

私は上記の設定のサーバーを持っており、長いタスクを処理していますが、私はFirebaseを通してやっているプロセス状態についてユーザーを更新する必要があります。クライアントに直ちに応答するために、python-rqを使ってredisでジョブをエンキューします。フラスコ付きのPython-rq + uwsgi + Nginx:もっと多くのuwsgiプロセスやredis workerが必要ですか?

私はフラスコとuwsgiとNginxを使用しています。 uwsgi confファイルには、プロセス数を問い合わせるフィールドがあります。 私の質問は、複数のuwsgiプロセス、またはより多くの赤ちゃんの作業者を開始する必要があるかどうかです。

より多くのuwsgiワーカーを開始すると、より多くの赤字労働者が作成されますか?

スケーリングはどのように機能するのですか?私のサーバーには1つのvCPUと2GBのRAMがあります。私は生産のために自動スケーリングをしています。より多くのuWsgiワーカーと、1つのキューのみを持つ赤ワインワーカーをいくつ実行する必要がありますか。

私は独立して作業を始めています。フラスコアプリが接続をインポートしてジョブを追加しています。

my startup script

my worker code

答えて

1

それはあなたがRQの労働者を実行しているかに依存します。 2つのケースがあります。

1)アプリ内からrqワーカーを実行しています。 uwsgi設定の作業者の数が増えると自動的に起動します。num_rq_workers_in_app_conf * num_app_workers_in_uwsgi_conf

2)supervisordのようにアプリケーションの外部でrq workerを実行します。アプリから独立してrqワーカーの数を手動で制御できる場所。

私によれば、supervisordの下でrq workersを実行すると、ポイント1よりも優れたオプションが得られます。これは、各ワーカーの効果的なデバッグに役立ちます。また、rqを使用している間に遭遇したもう1つの問題は、数週間の間隔でバックグラウンドで実行されていますが、rqから自分自身を登録解除します。

+0

ありがとうございます。私は外に(独立して)従業員を始めています https://gist.github.com/codeAshu/11d1e3a981e83a0275db42bd6379900f ここに私のスタートアップスクリプトですhttps://gist.github.com/codeAshu/3b71b689041654d323a652d2f520fabc – Rusty

+0

私のサーバー1つのvCPUと2GBのRAMがあります。私は生産のために自動スケーリングをしています。より多くのuWsgiワーカーと、1つのキューのみを持つ赤ワインワーカーをいくつ実行する必要がありますか。 – Rusty

+0

これは基本的にあなたのサービスに負荷がかかる要求に依存します。 uwsgiワーカーを増やすとアプリの可用性が向上し、rqワーカーの増加は並列処理の増加につながります。つまり、ジョブ処理とジョブキューイング時間に関心がなければ、rqワーカーを増やす必要はありません。 –