WSGIを使用してApacheサーバーにデプロイされるDjango Webアプリケーションを開発してきましたが、すべて順調に進んでいます。今日、ビルドDjango Adminインターフェースをカスタマイズするために、アプリのadmin.py
に若干の変更を加え、最初に構文エラー(閉じない括弧)を作成しました。つまり、wsgi.py
に触れてコードをロードすると(仮想ホストでWSGIをデーモンモードで実行している)、構文エラーにヒットしたときにWSGIが停止したため、Webサイトが内部サーバーエラーに置き換えられました。
そこで、構文エラーを修正し、manage.py check
がもうないことを確認し、wsgi.py
に触れて再デプロイしました。しかし、私のウェブサイトにはまだ内部サーバーエラーが表示されます! Apacheログを確認すると、これが表示されます。
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Create interpreter 'quotes.cs.cornell.edu|'.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/extra/www/html/quotes/quotes_Django' to path.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/' to path.
[Sun Nov 23 13:52:46 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_Django/quotes_Django/
wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_Django/quotes_Django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_Django/quotes_Django/wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/html/quotes/quotes_Django/
quotes_Django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] application = get_wsgi_application()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] Django.setup()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/__init__.py", line 21, in setup
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/apps/registry.py", line 115, in populate
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] app_config.ready()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/contrib/admin/apps.py", line 22, in ready
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] self.module.autodiscover()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/contrib/admin/__init__.py", line 23, in autodiscover
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] autodiscover_modules('admin', register_to=site)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/utils/module_loading.py", line 74, in autodiscover_modules
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] import_module('%s.%s' % (app_config.name,
module_to_search))
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/usr/lib64/python2.7/importlib/__init__.py", line
37, in import_module
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] __import__(name)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/html/quotes/quotes_Django/quotespage/
admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] approve_quotes.short_description = "Approve selected
quotes"
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] ^
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] SyntaxError: invalid syntax
[Sun Nov 23 13:53:36 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_Django/quotes_Django/
wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_Django/quotes_Django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_Django/quotes_Django/wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/extra/www/html/quotes/quotes_Django/
quotes_Django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] application = get_wsgi_application()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] Django.setup()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/__init__.py", line 21, in setup
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/Django/apps/registry.py", line 78, in populate
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] raise RuntimeError("populate() isn't reentrant")
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] RuntimeError: populate() isn't reentrant
最初の一連のエラーは、admin.py
の構文エラーが原因でWSGIが失敗することを示しています。ただし、2番目の一連のエラーは、Djangoの内部エラーを示しているようです。
RuntimeError: populate() isn't reentrant
registry.py
のpopulate
メソッドからスローされます。
このエラーメッセージをググリングすると、驚くほど小さな情報が返されますが、Djangoのドキュメントからは何も返されません。どうやら、settings.py
でアプリに2回名前を付けると時々起こることがありますが、私はそうしていません。さらに重要なことは、ウェブサイトが正常に機能していた時点からsettings.py
を変更していないことです。変更したのはadmin.py
だけでした。
行ったすべての変更を元に戻そうとしたので、すべてのPythonコードはWebサイトが機能していたときの状態に戻りましたが、作成しようとするとpopulate() isn't reentrant
エラーが発生しますWSGIがコードをリロードします!
また、settings.py
のINSTALLED_APPSセクションで別のアプリをコメントアウトしようとしましたが、「Django.contrib.staticfiles」のみを有効にしてもエラーが発生します。奇妙なことに、コメントアウトしてもエラーが発生しますallアプリ-Djangoは、アプリをロードしていない場合でもエラーをスローします!
誰がここで何が起こっているのか知っていますか?または、Apacheログのトレースバックは非常に役に立たないので、このエラーをデバッグするより良い方法はありますか?
注:Django 1.7、Apache 2.2、およびPython 2.7を使用しています。
私のサーバーの管理者がApacheを再起動すると、この問題が魔法のように修正されました。 populate() isn't reentrant
を引き起こさずに読み込まれたまったく同じPythonファイル。構文エラーのある別のファイルをロードして修正したところ、サーバーは新しいファイルをロードして問題なく正しく実行できました。
何が間違っていたのかはまだわかりませんが、問題がなくなったため、これを回答済みとしてマークしています。 (まあ、StackOverflowで自分の回答を受け入れることができ次第、回答済みとしてマークします。)
更新:誤って構文エラーでPythonをアップロードしたときにこのエラーが引き続き発生した後、Apacheを再起動するよりも簡単な回避策を見つけました。 WSGIがpopulate() isn't reentrant
エラーのスローを開始したら、Djangoプロジェクトのwsgi.py
を次の単純な関数に置き換えます。
def application(environ, start_response):
if environ['mod_wsgi.process_group'] != '':
import signal
os.kill(os.getpid(), signal.SIGINT)
return ["killed"]
次に、Webサイトをリロードすると、WSGIデーモンプロセスが再起動します(Webサイトに同じ500エラーが表示されていても、Apacheログを見るとわかります)。
wsgi.py
を通常に戻し、再度リロードすると、WSGIはpopulate() isn't reentrant
をスローせずにコードを正常に取得します(今回は構文エラーがないと仮定します)。したがって、Apache全体を再起動する必要はなく、WSGIプロセスだけで、ルート権限なしで再起動できます。
私はこれが古い答えであることを知っていますが、私のソリューションで貢献します:
問題の原因を診断する方法としてmanage.py check
を実行し、そこに何かを見つけるかどうかを確認します
私の場合、時代遅れの要件が問題であり、Djangoはサブモジュールのインポートに失敗していました
要件が最新であることを確認してください
これは、どこかのDjango設定のバグが原因です。残念ながら、Djangoはこの一般的で役に立たないエラーメッセージの背後にバグを隠しています。
真の問題を明らかにするには、Django/apps/registry.py
を開き、80行目付近を置き換えます:
raise RuntimeError("populate() isn't reentrant")
で:
self.app_configs = {}
これにより、Djangoがロードを続行し、実際のエラーが明らかになります。
いくつかの異なる原因でこのエラーが発生しました。かつては、アプリのadmin.pyの1つで不正なインポートがあったためです。
Google App Engineの使用中にこのエラーが発生した場合は、これを引き起こしている可能性のある他のエラーがないかログを確認してください。私が得ていた:
ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3
Google App EngineでSQLiteを使用できないため、settings.py
のDATABASES
セクションをコメントアウトすると、そのエラーが停止し、RuntimeError("populate() isn't reentrant")
エラーも停止しました。
それは反応ではなく、反射です。
Django 1.7にアップグレードし、500エラーが発生してページをリロードすると、Apacheは「populate()は再入不可」と言います。ページをロードすると、Apacheはアプリに必要なすべてのモジュールをロードし、エラーが処理されるとモジュールをアンロードしないと思います。したがって、ページをリロードすると、Apacheはこれらのモジュールを再度ロードしますが、すでにロードされています。したがって、Apacheは「populate()はリエントラントではない」と言います。
これを修正する2つのアクションがあります。Apacheを再起動するか、最初の5OOエラーを処理するエラーを修正します。
それがあなたのお役に立てば幸いです。
ロードプロセスの初期のファイル(wsgi.py以外)に触れることで、Apacheを再起動せずに修正できる場合があります。たとえば、設定ファイル:
$ touch settings.py
私はこれも適切に解決していませんが、ここで私の質問の詳細情報: mod-wsgi のDjango 1.7でのコード変更監視の誤動作
このエラーは、コード内のスペースとタブの使用に一貫性がない場合にも生成されます。
Apacheはwsgiファイルをキャッシュに保存します。 pythonファイルのApacheキャッシュを無効にする
したがって、最初にwsgiファイルを削除してacpacheを再起動し、次にwsgiファイルを再度追加してApacheを再起動します。
この同じ問題が発生しましたが、エラーの原因は、作業中のファイルの構文エラーにすぎませんでした。タイプミスを修正した後、populate() is not reentrant
エラーは消えました。
WsgiスクリプトからDjangoを実行している場合、コマンドラインからwsgiスクリプトを実行するだけでタイプミスを識別できる場合があります。例えば:
cd /usr/local/www/wsgi-scripts/
python djangolauncher.wsgi
これは、同じApache mod-wsgiエラーに対する有効な応答のニースのコレクションのように見えます。各人が自分に合ったものを投稿するので、ここに私のものがあります。
デプロイ後にプロジェクト要件を更新することを忘れないでください:)
この質問が出されてからしばらく経っていますが、ここで議論されていない問題のためにこの問題に出くわしました。 CentOS 7上のSELinuxが原因でRuntimeError: populate() isn't reentrant
エラーが発生しました。ホームディレクトリからDjangoを提供し、ホームディレクトリの読み取りを許可するSELinuxブール値を有効にする必要がありました。 populate()エラーは、権限の問題が原因でした。私にとっての解決策はsetsebool -P httpd_read_user_content 1
でした。これがこの問題を抱えている人の助けになることを願っています。
セットアップ:Ubuntu 14.04、Django 1.10、Python 3.5(virtualenv
内)。
これらの解決策の多くを運もなく試しましたが、Apacheエラーログに2つの異なるエラーが含まれていることに気付きました。誰かがページにアクセスしようとしたときに発生するものと、起動時に発生するものがあります。起動ページを見逃したのは、通常ページを何度か更新しようとしたため、訪問時のエラーが数回繰り返されるだけだったからです。
次に、代わりにスタートアップエラーの解決策と この質問は私にとってはうまくいきました の解決策を探しました。簡単に言うと、mod_wsgi
パッケージをラウンドアバウト方式で更新することが含まれます。
mod_wsgi
バージョンの不一致に関する警告を数か月間受け取っていましたが、突然Apacheエラー500が発生しました。私には意味がありません。
私の推測では、このRuntimeError: populate() isn't reentrant
エラーは通常、実際の問題を示す起動エラーを探す必要があるという兆候です。
[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/Django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/Django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/env/lib/python3.5/site-packages/Django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/env/lib/python3.5/site-packages/Django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/env/lib/python3.5/site-packages/Django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant
[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/Django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/Django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/env/lib/python3.5/site-packages/Django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/env/lib/python3.5/site-packages/Django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] File "/Django/env/lib/python3.5/site-packages/Django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant
[Sat Oct 15 03:38:43.291502 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.291579 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.291604 2016] [:error] [pid 28272] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.292356 2016] [:error] [pid 28272] assert tlock is not None
[Sat Oct 15 03:38:43.292377 2016] [:error] [pid 28272] AssertionError:
[Fri Oct 14 23:38:43.412942 2016] [:error] [pid 28299] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.413044 2016] [:error] [pid 28299] Traceback (most recent call last):
[Fri Oct 14 23:38:43.413076 2016] [:error] [pid 28299] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.425037 2016] [:error] [pid 28275] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.425125 2016] [:error] [pid 28275] Traceback (most recent call last):
[Fri Oct 14 23:38:43.425157 2016] [:error] [pid 28275] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.427625 2016] [:error] [pid 28274] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.427694 2016] [:error] [pid 28274] Traceback (most recent call last):
[Fri Oct 14 23:38:43.427722 2016] [:error] [pid 28274] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.432020 2016] [:error] [pid 28273] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.432078 2016] [:error] [pid 28273] Traceback (most recent call last):
[Fri Oct 14 23:38:43.432105 2016] [:error] [pid 28273] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.438577 2016] [:error] [pid 28299] assert tlock is not None
[Fri Oct 14 23:38:43.438654 2016] [:error] [pid 28299] AssertionError:
[Fri Oct 14 23:38:43.442174 2016] [:error] [pid 28274] assert tlock is not None
[Fri Oct 14 23:38:43.442226 2016] [:error] [pid 28274] AssertionError:
[Fri Oct 14 23:38:43.447227 2016] [:error] [pid 28276] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.447294 2016] [:error] [pid 28276] Traceback (most recent call last):
[Fri Oct 14 23:38:43.447326 2016] [:error] [pid 28276] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.448813 2016] [:error] [pid 28277] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.448876 2016] [:error] [pid 28277] Traceback (most recent call last):
[Fri Oct 14 23:38:43.448903 2016] [:error] [pid 28277] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.450188 2016] [:error] [pid 28273] assert tlock is not None
[Fri Oct 14 23:38:43.450231 2016] [:error] [pid 28273] AssertionError:
[Fri Oct 14 23:38:43.456680 2016] [:error] [pid 28275] assert tlock is not None
[Fri Oct 14 23:38:43.456737 2016] [:error] [pid 28275] AssertionError:
[Fri Oct 14 23:38:43.461761 2016] [:error] [pid 28277] assert tlock is not None
[Fri Oct 14 23:38:43.461826 2016] [:error] [pid 28277] AssertionError:
[Fri Oct 14 23:38:43.466165 2016] [:error] [pid 28276] assert tlock is not None
[Fri Oct 14 23:38:43.466219 2016] [:error] [pid 28276] AssertionError:
[Fri Oct 14 23:38:43.658971 2016] [mpm_prefork:notice] [pid 28268] AH00169: caught SIGTERM, shutting down
[Sat Oct 15 03:38:43.691909 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.691968 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.691996 2016] [:error] [pid 28272] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.693126 2016] [:error] [pid 28272] assert tlock is not None
[Sat Oct 15 03:38:43.693159 2016] [:error] [pid 28272] AssertionError:
[Fri Oct 14 23:38:44.490316 2016] [:warn] [pid 28349] mod_wsgi: Compiled for Python/3.4.0.
[Fri Oct 14 23:38:44.490407 2016] [:warn] [pid 28349] mod_wsgi: Runtime using Python/3.4.3.
[Fri Oct 14 23:38:44.505672 2016] [mpm_prefork:notice] [pid 28349] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.19 mod_wsgi/3.4 Python/3.4.3 configured -- resuming normal operations
[Fri Oct 14 23:38:44.505764 2016] [core:notice] [pid 28349] AH00094: Command line: '/usr/sbin/Apache2'
私はちょうど同じ問題に直面したので、見回し始めました。
これで動作するようになったので、皆さんと共有すべきだと思いました!
私がしたことは、chown user:group /to/path -R
とchmod 770 /to/path -R
をもう一度やり直すだけで、うまくいきました。
多数の回答がそれを明らかにしています。これは一般的なエラーであり、通常はApache/WSGIのロードに関連する複数の根本原因が考えられます。
このページのこれらの回答はすべて一種のチェックリストとして機能するはずです。そのため、このエラーのインスタンスの根本原因を追加したいと思います。「import os」をsettings.pyファイルに追加できませんでした。
具体的には、チームに開発者がいて、不要なパッケージを削除し、代わりにproduction settings.pyファイルの先頭から「import os」を削除しました。 Apacheの再起動後、アプリケーションは再起動せず、恐ろしい「RuntimeError:populate()is not reentrant」エラーを受け取りました。
簡単な「python manage.pyチェック」では問題は明らかになりませんでしたが、「python settings.py」では明らかになりました。 osパッケージはロードされませんでした。
このエラーが発生した場合は、settings.pyファイルとWSGIファイルの確認に重点を置いてください。
Apacheサーバーを再起動すると問題が解決しました。コマンド$ Sudo service Apache2 restartを使用してそれを行うことができます
この設定の順序を変更した後、私はこの同じエラーになりました:
MIDDLEWARE_CLASSES = (
'Django.contrib.sessions.middleware.SessionMiddleware',
'Django.middleware.common.CommonMiddleware',
'Django.middleware.csrf.CsrfViewMiddleware',
'Django.contrib.auth.middleware.AuthenticationMiddleware',
'Django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'Django.contrib.messages.middleware.MessageMiddleware',
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
'Django.middleware.security.SecurityMiddleware',
)
前の順序に戻し、Apacheを再起動すると問題が修正されました。
リストに私の理由を追加します。私にとっては、プロセスディレクトリと同じディレクトリ名のDjangoサービスがあったためです。プロセス/ディレクトリの名前を変更すると、問題が修正されました。
Virtualenvディレクトリを削除し、virtualenvを再作成してから、すべての要件を再インストールすると修正されました。
私の場合、必要なpip-packageがないためにエラーが発生しました。
そこでpip install -r requirements.txt
を実行し、Apacheを再起動すると、再び機能しました。
RuntimeError: populate() isn't reentrant
何でも構いません。そのため、この質問には非常に多くの異なる答えがあります。
トリックは、RuntimeError
の直前のエラーメッセージを確認することです。あなたの場合、15行目の/extra/www/htmlquotes/quotes_Django/quotespage/admin.pyファイルに構文エラーがあるようです:
Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/htmlquotes/quotes_Django/quotespage/admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] pprove_quotes.short_description = "Approve selected quotes"
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] ^
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] SyntaxError: invalid syntax
私の場合、custom renderer class
がDjango Rest Framework
で、何らかの目的でレンダラークラスのメソッド「get_context」をオーバーライドする必要がありました(完全な開示:Django toolbar
に正しいSQLクエリカウントを与えるため)
そのクラスを削除して再デプロイしました。動いた。
再帰的なDjango.setup()
がありました。たとえば、Django.setup()
をapp/models.py
の中に書き込もうとしましたが、スタックトレースDjangoでこれを指摘しようとしました:
... "site-packages/Django/apps/config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
...
... ./myproject/myapp/models.py ...
そうです、Djangoのセットアップ中にDjangoをセットアップしないでください...
私はこの問題を抱えていたので、コミットをバックトラックするまでその理由を見つけることができませんでした。どうやら、オートコンプリートのせいで偶然のインポートを追加してしまい、セットアップを台無しにしてしまったようです。
# found in models.py from msilib.schema import SelfReg
Apacheエラーログ:RuntimeError( "populate()is not reentrant")
私のWindows開発環境では問題なく動作しましたが、ubuntu/Apacheサーバーでは失敗しました。