web-dev-qa-db-ja.com

Django Webfaction 'デーモンプロセスから応答ヘッダーを読み取るときにタイムアウトしました'

私のDjango Webfactionでホストされている本番サーバー上のアプリは、settings.pyファイルへの変更をプッシュした後、再起動しようとするまで正常に機能していました。実行しました

Apache2/bin/restart

いつものように。次に、ブラウザーでアプリにアクセスしようとすると、504ゲートウェイのタイムアウトが発生しました。私はmod_wsgiログを調べて、これを見ました:

[Thu Nov 03 23:46:53.605625 2016] [wsgi:error] [pid 8027:tid 139641332168448]
[client 127.0.0.1:34570] Timeout when reading response headers from daemon 
process 'myapp' : /home/<me>/webapps/<myapp>/<ProjectName>/<myapp>/wsgi.py

これはどういう意味ですか、どうすれば修正できますか? settings.pyファイルで私が変更した唯一のことは、いくつかの変数名を移動することでした。私はまだアプリと正常に対話することができます

python2.7 manage.py Shell

しかし、私はWebでそれを取得することも、APIを使用することもできません。

編集:これが私のwsgi.pyファイルです:

import os

from Django.core.wsgi import get_wsgi_application

os.environ.setdefault("Django_SETTINGS_MODULE", "<myapp>.settings")

application = get_wsgi_application()
17
Nick

NumpyなどのPython C拡張モジュールは、mod_wsgiで使用するとタイムアウトを引き起こすことが知られています。 https://serverfault.com/a/514251/109598 で利用可能な問題の明確な説明(mod_wsgiの作成者から直接)があります。

それが問題の原因であると思われる場合、解決策はおそらく単純です-httpd.confに以下を追加します。

WSGIApplicationGroup %{GLOBAL}

変更後は、Apacheインスタンスを必ず再起動してください。

23
Sean F

httpd.confの-​​ Timeout ディレクティブを増やしてみてください。Apache2.4ではデフォルトで60秒に設定されています。例えば:

TimeOut 600
2
tuomastik

これが私の問題の根本的な原因を見つけることができた方法です。

python manage.py showmigrations

アプリがデータベースサーバーに到達できなかったため、最終的にタイムアウトしました。 manage.pyを実行すると、コンソールにエラーメッセージが表示されます。

1
Marston

私の場合(Python 3.6)、mimetypesモジュールがこの問題の原因です。これについては詳しく調査しませんでしたが、mimetypes.guess_typeの呼び出しを削除することで問題は解決しました。呼び出しは関連するDjangoビュー関数で行われました。

0
Markus