DjangoはRuntimeErrorでの動作を停止します。populate()は再入可能ではありません


123

私はWSGIを使用してApacheサーバーにデプロイされたDjango Webアプリケーションを開発しており、すべてが順調に進んでいます。今日、私はadmin.py組み込みのDjango管理インターフェースをカスタマイズするためにアプリにいくつかのマイナーな変更を加え、最初に構文エラー(閉じられていない括弧)を作りました。つまりwsgi.py、コードに触れてロードすると(仮想ホストでWSGIがデーモンモードで実行されています)、構文エラーに遭遇するとWSGIが停止したため、ウェブサイトが内部サーバーエラーに置き換えられました。

そこで、構文エラーを修正し、でそれ以上ないことを確認してmanage.py checkwsgi.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

最初の一連のエラーは、myの構文エラーが原因でWSGIが失敗したことを示していますadmin.py。ただし、2番目の一連のエラーは、Django内部のエラーを示しているようです。

RuntimeError: populate() isn't reentrant

populateメソッドからスローされregistry.pyます。

このエラーメッセージをグーグルすると、驚くほど少ない情報が返されますが、Djangoのドキュメントからは返されません。どうやら、でアプリに2度名前を付けると時々起こることがありますsettings.pyが、私はそうしていません。さらに重要なのsettings.pyは、ウェブサイトが正常に機能していた時点から私が変わっていないことadmin.pyです。

行ったすべての変更を元に戻そうとしたので、すべてのPythonコードは、Webサイトが機能していたときの状態に戻りpopulate() isn't reentrantます。WSGIにコードを再ロードさせようとすると、エラーが発生します。

また、のINSTALLED_APPSセクションでさまざまなアプリをコメント化しようとしましたがsettings.py、「django.contrib.staticfiles」のみを有効にしてもエラーが発生します。奇妙なことに、すべてのアプリをコメントアウトしてもエラーが発生します。Djangoは、アプリをロードしていないときでもエラーをスローします。

誰かがここで何が起こっているのか知っていますか?または、Apacheログのトレースバックが役に立たないため、このエラーをデバッグするためのより良い方法はありますか?

注:私はDjango 1.7、Apache 2.2、Python 2.7を使用しています。


2
周りにある可能性のあるすべての.pycファイルを削除してみます。
デュークボディ2014年

いいえ、すべての.pycファイルを削除しても問題は解決しませんでした。タッチwsgi.pyすると同じApacheエラーが発生し、.pycファイルは再作成されません。
エドワード

1
Apacheを再起動してみましたか?
デュークボディ2014年

このサーバーに対する権限がないため、Apacheを再起動できません。rootアクセス権を持つ管理者は、月曜日までオフィスに戻りません。
エドワード

私の場合、環境内のINSTALLED_APPSからアプリがインストールされていませんでした。
maciek

回答:


99

これは、Django設定のどこかにバグがあるために発生します。残念ながら、Djangoはこの一般的で役に立たないエラーメッセージの背後にあるバグを隠しています。

真の問題を明らかにするには、django/apps/registry.py80行目を開いて、次のように置き換えます。

raise RuntimeError("populate() isn't reentrant")

と:

self.app_configs = {}

これにより、Djangoは読み込みを続行し、実際のエラーを明らかにすることができます。

このエラーはいくつかの原因で発生しました。かつては、アプリのadmin.pyの1つに不適切なインポートがあったためです。


22
これは、このスレッドで最も有用な答えです。今私は知っている->django.core.exceptions.ImproperlyConfigured: psycopg2_version 2.5.4 or newer is required; you have 2.5 (dt dec pq3 ext)
RickyA

2
私を助けた。このソリューションにより、不足している要件とそれらの間の互換性エラーを正常に確認できました。
アンヘルヒメネス

1
これは完璧でした。この1行を変更すると、単純なインポートエラーが発生したことがわかります。その前に何が起こっているのか分かりませんでした。
James

4
この答えは純金です。
xpanta

2
@RickyAとこれは、私がこの答えを気にする必要がなく、試してみてpip install --upgrade psycopg2それを修正したので、断然最も有用なコメントでした。
ユーザー

65

サーバーの管理者がApacheを再起動したところ、この問題は魔法のように修正されました。原因となることなく読み込まれたまったく同じPythonファイルpopulate() isn't reentrant。構文エラーのある別のファイルをロードして修正したところ、サーバーは新しいファイルをロードして問題なく正常に実行できました。

何がうまくいかなかったのかはまだわかりませんが、問題が解決したので、これを回答済みとしてマークします。(まあ、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プロセスのみです。ルート権限がなくても実行できます。


8
私にとっての問題は、アプリの1つでモデルに加えた変更を移行しないことでした。
user2662692

わかりました、私はほぼ同じ問題に直面しており、はい、それはマシンの再起動とサーバーの再起動で修正されます。しかし、問題は繰り返され続けます。時々突然のすべて。1か月以内に3回発生しています。誰かが何かアイデアがあれば、助けてください。
Rohit

@Rohit、状況についてサポートが必要な場合は、おそらくそれを説明する新しい質問を投稿する必要があります。ここのコメントで答えを得る可能性は低いです。
エドワード

4
ありstartup-timeoutDjangoは、このようなデータベースが利用可能でないと、初期化されているときに一時的なエラーから回復するのを助けるのmod_wsgiの最近のバージョンでのmod_wsgiのデーモンモードのオプションが。タイムアウト期間が経過してもWSGIアプリケーションが適切にロードされない場合、タイムアウトによりプロセスが自動的に再起動されます。それでも、自分のコードに永続的な問題がある場合には役に立ちません。その場合は、エラーではなく、最初のエラーを探してpopulate()ください。コードが失敗した実際の理由がわかるためです。
Graham Dumpleton 2016年

1
「この単純な関数を使用したDjangoプロジェクトのwsgi.py」とはどういう意味ですか?ファイルを関数でどのように置き換えますか?
Cerin、2017年

46

私はこれが古い答えであることを知っていますが、私の解決策で貢献します:

問題の発生源を診断し、manage.py checkそこに何かがあるかどうかを確認する方法として

私の場合、古い要件が問題であり、djangoがサブモジュールをインポートできませんでした

要件が最新であることを確認してください


2
Apacheでエラー500が発生し、問題が見つかりません。このコマンドによりmanage.py check、問題が見つかりました。ありがとうございました。
Ali Hesa​​ri 2017

13

それは反応ではなく反射です。

django 1.7にアップグレードし、500エラーが発生してページをリロードすると、Apacheは「populate()は再入不可」と表示します。ページをロードするとき、Apacheはアプリに必要なすべてのモジュールをロードし、エラーが処理されるときはモジュールをアンロードしないと思います。したがって、ページをリロードすると、Apacheはこれらのモジュールを再度ロードしますが、すでにロードされています。したがって、Apacheは「populate()は再入可能ではない」と述べています。

これを修正するための2つのアクションがあります。Apacheを再起動するか、最初の5OOエラーを処理するエラーを修正します。

Apacheを再起動してみてください:

sudo service httpd restart

お役に立てば幸いです。


10

Google App Engineを使用しているときにこのエラーが発生した場合は、これを引き起こしている可能性のある他のエラーがないかログを確認してください。私は得ていました:

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

Google App EngineでSQLiteを使用することはできないためDATABASESsettings.py停止したエラーのセクションとエラーもコメント化しRuntimeError("populate() isn't reentrant")ます。


これは、すべてがローカルで正常に動作したが、GAEにデプロイしたときに500エラーが発生した理由を説明しています。小さなヒント:GAEログページでテキスト "raise"を検索すると、正確に1つのヒットが生成され、donturnerによってエラーメッセージが指摘されました。彼の解決策は私の日を救った:-)
Golden Thumb



2

ちょうど同じ問題に直面したので、周りを見回し始めました。

これで動作するようになったので、皆さんと共有したいと思いました。

私がしたことはchown user:group /to/path -R、何もしchmod 770 /to/path -Rなくて、何回もやりました、そしてそれは働きました。


2

これは、同じApache mod-wsgiエラーに対する有効な応答の素晴らしいコレクションのように見えます。

展開後にプロジェクト要件を更新することを忘れないでください:)


2

私も同じ問題を経験しましたが、エラーの原因は、使用していたファイルの構文エラーにすぎませんでした。タイプミスを修正した後、populate() is not reentrantエラーは消えました。

wsgiスクリプトからdjangoを実行している場合、コマンドラインからwsgiスクリプトを実行するだけでタイプミスを特定できる場合があります。例えば:

cd /usr/local/www/wsgi-scripts/
python djangolauncher.wsgi

2

このエラーは、コード内のスペースとタブの使用に矛盾がある場合にも発生しました。


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'

新しい質問を作成します。答えとして質問しないでください。
Graham Dumpleton 2016年

1
私は質問していません。私のために働いた同じ問題の解決策を投稿します。Apacheはエラー500をスローし、ログファイル内のエラーは、ここで質問されたものと同じです。私の答えをもう一度読んでください。:)
CoderGuy123 2016年

次に、別の質問にリンクするのではなく、実際の解決策を回答に含めます。問題は、その別の投稿には問題がまったく記載されておらず、populate()私にとってはまったく別の問題のように見えるため、同じ問題をどのように解決していたのかわかりません。だから、限り、誰もが言うことができるように、あなたは..あなたが最初にのために別の質問をではなく、他の記事で詳細に基づいて別の問題のように見えるもののために、ここでの応答を混乱させている必要があります別の問題があった
グラハムDumpleton

ここで手順を繰り返す必要はありません。エラーは同じログに表示されますが、このOPにはすべてが含まれていませんでした。ページにアクセスすると1つのエラーが表示されます(ここではOPの一部です)、Apacheが起動すると別のエラーが表示されます(他のスレッドの一部です)。
CoderGuy123 2016年

1

この質問が出されてからしばらく経ちましたが、ここで説明されていない問題のため、この問題に遭遇しました。私はなっていたRuntimeError: populate() isn't reentrant私は、Djangoはホームディレクトリのうち務めていたCentOSの7に起因するのSELinuxにエラーを、そして移入()エラーがアクセス許可の問題が原因だったように私は単純に、ホームディレクトリを読み込む許可SELinuxのブール値を有効にする必要がありました。私の解決策はでしたsetsebool -P httpd_read_user_content 1。これがこの問題を抱えている人に役立つことを願っています。


CentOS 7とSELinuxでも同じ問題がありました。を使用chconして問題.soファイルのコンテキストをに変更することで修正しましたhttpd_sys_script_exec_t
Jon

1

多数の回答がそれを明らかにしています。これは、複数の根本的な原因となる可能性のある一般的なエラーであり、通常はApache / WSGIのロードに関連しています。

このページのこれらすべての回答は一種のチェックリストとして機能するはずです。そのため、このエラーのインスタンスの根本的な原因を追加したいと思います。「import os」をsettings.pyファイルに追加できませんでした。

具体的には、不要なパッケージを削除しようとする開発者がチームにいて、代わりに本番環境のsettings.pyファイルの先頭から「import os」を削除しました。Apacheの再起動後、アプリケーションは再起動せず、恐ろしい「RuntimeError:populate()is n't reentrant」エラーを受け取りました。

簡単な「python manage.py check」では問題は明らかになりませんでしたが、「python settings.py」では明らかになりました。osパッケージがロードされていません。

このエラーが発生した場合は、settings.pyファイルとWSGIファイルのチェックに重点を置いて検索してください。


3
さらに重要なこととして、エラーログに戻って、Apacheまたはmod_wsgiデーモンプロセスの1つを再起動した後に発生する最初のエラーメッセージを確認してください。その最初のエラーは、エラーの真の理由を教えてくれます。その後の同じプロセスに対する要求では、reentrantエラーのみが言及されます。デーモンモードで、startup-timeoutコーディングエラーではなく一時的なエラーが原因でこの問題が発生した場合は、オプションを使用していることも確認してください。少なくともその方法で、自動的に回復できます。
グラハムダンプルトン2018

これは正解です。エラーは一般的です。runtimeerrorの直前のメッセージを確認してください。
Popieluch

1

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

1

AWS Elastic Beanstalkに関する注意:settings.pyDjango-adminによって記述されたデフォルトには、データソースとしてローカルのsqliteデータベースへの参照が含まれています。これはおそらくローカルOSでは機能しますが、AWS EBでは機能せず、populate() isn't reentrantランタイムエラーが発生します。これをテストするには、でDATABASES={<...>}ステートメントをコメント化しsettings.py、デプロイして、アプリケーションを再度開きます。


これは、デフォルトのsqliteデータベースでDjangoバージョン2.2以降を使用してAWS EBにデプロイした場合などに発生します。あなたはdjango.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).後に続くでしょうRuntimeError: populate() isn't reentrantAWSドキュメントから:「Django 2.2はElastic Beanstalk Python 3.6プラットフォームと互換性がありません。」(執筆時)
djvg

0

私はこの問題を抱えていて、コミットをバックトラックするまで、その理由を見つけることができませんでした。どうやら、オートコンプリートのため、誤ってインポートしてしまい、セットアップが失敗したようです。

# found in models.py from msilib.schema import SelfReg

Apacheエラーログ:RuntimeError( "populate()is n't reentrant")

私のWindows開発環境では問題なく動作しましたが、ubuntu / apacheサーバーでは失敗しました。


0

この設定の順序を変更した後、私はこの同じエラーに入りました:

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を再起動すると問題が修正されました。


0

私の場合、custom renderer classforがDjango Rest Frameworkありました。ある目的のために、レンダラークラスのメソッド「get_context」をオーバーライドする必要がありました(完全な開示:django toolbar正しいSQLクエリ数を与えるため)

そのクラスを削除して再デプロイしました。出来た。


0

私の場合、必要なpip-packageがないためにエラーが発生しました。

だから私はpip install -r requirements.txt、再起動したApacheを実行し、物事は再びうまくいきました。


0

virtualenvディレクトリを削除し、virtualenvを再作成してから、すべての要件を再インストールして修正しました。


0

私の理由をリストに追加します。私にとっては、プロセスディレクトリと同じディレクトリで名前が付けられたdjangoサービスがあったからです。プロセス/ディレクトリの名前を変更すると、問題が修正されました。


0

私は再帰的でしたdjango.setup()、例えば私はdjango.setup()内部にan を書き込もうとしました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をセットアップしないでください...


0

Apacheサーバーを再起動して問題を解決しました。コマンド$ sudo service apache2 restartを使用してそれを行うことができます


0

これと同じ問題がありましたが、私のために働いたのは/settings.pyのデフォルトのデータベース設定をコメントアウトすることでした。私は、djangoの新しいバージョンはebsと互換性がないことも読んだ


0

私にとってのエラーはmysqlclient、requirements.txtファイルにパッケージがないことでした。

最初に私はmysqlclientパッケージをインストールしました:

pip install mysqlclient

次に、requirements.txtファイルを次のように更新しました。

pip freeze > requirements.txt

これで私の問題は解決しました。



-1

私の2ユーロセントを投入するには:

Dockerで動作するセットアップを再作成しました。新しいDockerセットアップが失敗しました

populate isn't reentrant

これは一般的なエラーのようです。私の場合、それを見落としていた

pip install Django

必要なバージョンではなく、最新バージョン(2.0)をインストールします1.11。これを

pip install Django==1.11

私の問題を修正しました。


-1

これは、に問題がある場合の一般的なエラーだと思いますsettings.py。インストールされているアプリを1つずつ削除することで、試行錯誤で問題を見つけることができる場合があります。場合によっては、インストールされているアプリとは関係ありません。しかし、私の経験から、すべての場合でそれはsettings.pyファイル内の問題です。


-1

settings.pyのインストール済みアプリセクションでAPI名を2回指定していないか確認してください。

アプリケーション定義

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api',
    'myapp_api.apps.myappWebserviceApiConfig',    
]

アプリケーション定義

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api.apps.myappWebserviceApiConfig',
]

重複したエントリを削除すると問題が解決しました


しかし、チュートリアルではINSTALLED_APPS = ['allauth'、 'allauth.account'、 'allauth.socialaccount'、]
ming

@mingこれはオプションです。
Swati Srivastava
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.