2017-11-15 17 views
0

私は、pythonイメージを使ってopenshift onlineでpython apiを作成しました。すべてのデータを要求すると、応答には30秒以上かかります。サーバーは、504ゲートウェイ・タイムアウトHTTP応答を出します。レスポンスの長さはどのように設定しますか? >ルート上で注釈を作成しましたが、これはプロキシのタイムアウトを設定しているようです。Openshift online v3 - デーモンプロセスから応答ヘッダーを読み取るときのタイムアウト

haproxy.router.openshift.io/timeout: 600s 

問題が残っていますが、今はログに記録されています。メッセージはmod_wsgiから来ているようです。

httpd(mod_wsgi-expressプロセス)の設定をrequest-timeout 60からrequest-timeout 600に変更してみたいと思います。私は基本イメージを使用していますhttps://github.com/sclorg/s2i-python-container/tree/master/2.7

ログ:

Timeout when reading response headers from daemon process 'localhost:8080':/tmp/mod_wsgi-localhost:8080:1000430000/htdocs 

は、誰かが私のアプリのルートのhaproxyのタイムアウトを変更するには、オンラインopenshiftに

+0

をキャンセルする前に10分を待つのか? Webリクエストのコンテキストで処理するのではなく、Celeryなどのタスクキューイングシステムに処理をオフロードする必要があるように思えます。このような長い実行要求を許可することで、これらの多くを同時に取得した場合、容量がなくなるとWebサーバー全体がブロックされます。 –

+0

私は同意する、それは将来問題になる可能性があります。今のところ、リクエストは最大10回/日で行われますが、これは将来的に増加する可能性があります。これは、データを生成するために多くの仕事用サーバがあるapiリクエストです。あなたの解決策は何ですか?作業をセロリーに委ね、終了したら応答を送信しますか? – jeew

+0

まれであれば、セロリーは過度のものになります。しかし、通常、バックグラウンドにオフロードし、キューに入れられた肯定応答を返します。その後、クライアントのアンケートを行い、完了したかどうかを確認します。それがあなたのために働くならば、現在それと一緒に行く。唯一の懸案事項は、これらのタイムアウトが処理されたすべてのリクエストに適用されるということです。これは短いリクエストでは、mod_wsgiが機能しなくなった場合に回復する能力を失うことを意味します。 http://blog.dscpl.com.au/2014/02/vertically-partitioning-python-web.html –

答えて

0

次へ]をこのエラーを修正する方法を知ってい

haproxy.router.openshift.io/timeout: 600s 

pythonアプリケーションのapp.shでrequest-timeoutとsocket-timeoutを変更しました。だから、mod_wsgiを発現するサーバが高いタイムアウトが設定されている

ARGS="$ARGS --request-timeout 600" 
ARGS="$ARGS --socket-timeout 600" 

私のアプリケーション今、あなたはリクエストが長いことを取ることをやっている仕事のどのような要求

関連する問題