it-swarm.com.de

Django funktioniert nicht mehr mit RuntimeError: populate () ist nicht wiedereintrittsfähig

Ich habe eine Django-Webanwendung entwickelt, die mit WSGI auf einem Apache-Server bereitgestellt wurde, und alles lief reibungslos. Heute habe ich ein paar kleinere Änderungen an admin.py meiner App vorgenommen, um die eingebaute Django Admin-Benutzeroberfläche anzupassen. Zu Beginn machte ich einen Syntaxfehler (eine nicht geschlossene Klammer). Dies bedeutete, dass meine Website durch Berühren von wsgi.py und Laden des Codes (ich habe WSGI im Daemon-Modus auf meinem virtuellen Host ausgeführt) durch einen internen Serverfehler ersetzt wurde, da WSGI angehalten wurde, als der Syntaxfehler auftrat.

Also habe ich den Syntaxfehler behoben, überprüft, dass ich nicht mehr mit manage.py check vorhanden bin, und habe wsgi.py zum erneuten Deployen berührt. Aber meine Website zeigt immer noch einen internen Serverfehler! Beim Überprüfen der Apache-Protokolle sehe ich Folgendes:

[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

Die erste Reihe von Fehlern zeigt, dass WSGI aufgrund eines Syntaxfehlers in meinem admin.py fehlschlägt. Die zweite Reihe von Fehlern scheint jedoch einen internen Fehler in Django aufzuzeigen: 

RuntimeError: populate() isn't reentrant

wird aus der populate-Methode von registry.py geworfen.

Beim Googeln dieser Fehlermeldung werden überraschend wenig Informationen zurückgegeben, keine Informationen aus der Django-Dokumentation. Anscheinend kann es manchmal passieren, wenn Sie eine App zweimal in Ihrem settings.py benennen, aber ich mache das nicht. Noch wichtiger ist, ich habe settings.py seit dem Zeitpunkt, an dem die Website einwandfrei funktionierte, nicht geändert. Das einzige, was ich geändert habe, war admin.py

Ich habe versucht, alle von mir vorgenommenen Änderungen rückgängig zu machen. Der gesamte Python-Code befindet sich also wieder in dem Zustand, in dem die Website funktionierte - und ich bekomme immer noch den Fehler populate() isn't reentrant, wenn ich versuche, den Code durch WSGI neu zu laden!

Ich habe auch versucht, verschiedene Apps im Abschnitt INSTALLED_APPS von settings.py auszukommentieren, und selbst wenn nur "Django.contrib.staticfiles" aktiviert ist, tritt der Fehler immer noch auf. Seltsamerweise bekomme ich immer noch den Fehler, auch wenn ich alle die Apps auskommentiere - Django wirft den Fehler, auch wenn keine Apps geladen werden!

Weiß jemand, was hier los ist? Oder eine bessere Möglichkeit, diesen Fehler zu debuggen, da das Traceback im Apache-Protokoll nicht hilfreich ist?

Anmerkungen: Ich verwende Django 1.7, Apache 2.2 und Python 2.7. 

72
Edward

Der Administrator meines Servers hat Apache neu gestartet, und dieses Problem wurde auf magische Weise behoben. Die exakt gleichen Python-Dateien wurden geladen, ohne populate() isn't reentrant zu verursachen. Ich habe sogar versucht, eine andere Datei mit einem Syntaxfehler zu laden und dann zu beheben, und der Server konnte die neue Datei laden und ohne Probleme korrekt ausführen. 

Ich weiß immer noch nicht, was schief gelaufen ist, aber ich bezeichne dies als beantwortet, da das Problem weg ist. (Nun, ich werde es als beantwortet markieren, sobald StackOverflow es mir erlaubt, meine eigene Antwort zu akzeptieren.)

Update : Nachdem ich weiterhin diesen Fehler erhalten hatte, als ich versehentlich Python mit Syntaxfehlern hochlud, fand ich eine Problemumgehung, die einfacher ist als der Neustart von Apache. Wenn WSGI den populate() isn't reentrant-Fehler auslöst, ersetze ich den wsgi.py meines Django-Projekts durch diese einfache Funktion:

def application(environ, start_response):
    if environ['mod_wsgi.process_group'] != '': 
        import signal
        os.kill(os.getpid(), signal.SIGINT)
    return ["killed"]

Dann lade ich meine Website neu und der WSGI-Daemon-Prozess wird neu gestartet (was ich anhand des Apache-Protokolls feststellen kann, obwohl die Website immer noch den gleichen 500-Fehler aufweist).

Wenn ich dann wsgi.py wieder in den Normalzustand versetze und erneut lädt, nimmt WSGI meinen Code erfolgreich auf, ohne populate() isn't reentrant zu werfen (vorausgesetzt, ich habe diesmal keine Syntaxfehler). Also muss der gesamte Apache nicht neu gestartet werden, nur der WSGI-Prozess, und ich kann dies ohne Root-Berechtigungen tun.

54
Edward

Ich weiß, dass dies eine alte Antwort ist, aber ich werde mit meiner Lösung beitragen:

Um die Ursache des Problems zu diagnostizieren, führen Sie manage.py checkund prüfen, ob Sie dort etwas finden

In meinem Fall war das Problem eine veraltete Anforderung, und Django konnte kein Submodul importieren

Stellen Sie sicher, dass Ihre Anforderungen auf dem neuesten Stand sind

27
Jesus Gomez

Wenn dieser Fehler bei der Verwendung von Google App Engine auftritt, überprüfen Sie Ihre Protokolle auf andere Fehler, die dies möglicherweise verursachen. Ich bekam:

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

Sie können SQLite nicht mit Google App Engine verwenden. Auskommentieren des Abschnitts DATABASES von settings.py Hat diesen Fehler und den Fehler RuntimeError("populate() isn't reentrant") ebenfalls gestoppt.

8
donturner

Es ist keine Antwort, sondern eine Reflexion.

Wenn Sie ein Upgrade auf Django 1.7 durchführen und ein Fehler 500 auftritt und Ihre Seite neu lädt, sagt Apache, dass "populate () nicht wiedereintrittsfähig ist". Ich denke, wenn Sie Ihre Seite laden, lädt Apache alle Module, die Sie für Ihre App benötigen, und wenn der Fehler behandelt wird, wird das Modul nicht entladen. Wenn Sie also Ihre Seite neu laden, lädt Apache diese Module erneut, ist aber bereits geladen. Apache sagt also "populate () ist nicht wiedereintrittsfähig".

Ich habe zwei Maßnahmen, um dies zu korrigieren: Starten Sie Apache neu, oder korrigieren Sie den Fehler, der den ersten Fehler des 5OO behandelt.

Ich hoffe es hilft dir.

4

Sie können es möglicherweise beheben, ohne Apache neu zu starten, indem Sie eine Datei (außer wsgi.py) berühren, die sich zu einem frühen Zeitpunkt des Ladevorgangs befindet. Zum Beispiel Ihre Einstellungsdatei:

$ touch settings.py

Ich habe dies auch nicht richtig gelöst, aber weitere Informationen in meiner Frage hier: Überwachung von Code-Änderungsfehlern mit Django 1.7 auf mod-wsgi

4
seddonym

Apache speichert die Wsgi-Datei in ihrem Cache. Apache-Zwischenspeicherung von Python-Dateien deaktivieren

Löschen Sie also zuerst die wsgi-Datei, starten Sie Ihren Acpache neu und fügen Sie die wsgi-Datei erneut hinzu, und starten Sie den Apache neu.

3
Abhishek Lodha

Ich habe das gleiche Problem erfahren, und die Fehlerquelle war für mich nur ein Syntaxfehler in einer Datei, mit der ich gearbeitet habe. Nachdem der Tippfehler behoben wurde, ist der Fehler populate() is not reentrant verschwunden.

Wenn Sie Django von einem wsgi-Skript aus ausführen, können Sie möglicherweise den Tippfehler ermitteln, indem Sie das wsgi-Skript einfach über die Befehlszeile ausführen. Zum Beispiel:

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

Das sieht aus wie eine nette Sammlung gültiger Antworten für denselben Apache mod-wsgi-Fehler, wobei jeder Typ denjenigen postet, der für ihn/sie funktioniert, also hier mein:

Vergessen Sie nicht, Ihre Projektanforderungen nach der Bereitstellung zu aktualisieren :)

3

Ich weiß, es ist eine Weile her, seit diese Frage gestellt wurde, aber ich bin gerade auf dieses Problem gestoßen, aufgrund eines Problems, das ich hier nicht gesehen habe. Ich erhielt den RuntimeError: populate() isn't reentrant-Fehler aufgrund von SELinux auf CentOS 7. Ich hatte Django aus einem Home-Verzeichnis geliefert, und ich musste einfach den SELinux-Boolean aktivieren, der das Lesen von Home-Verzeichnissen erlaubte, da der populate () -Fehler auf ein Berechtigungsproblem zurückzuführen war . Die Lösung für mich war setsebool -P httpd_read_user_content 1. Ich hoffe, das hilft jemandem, der dieses Problem hat.

2
Ad Astra

Setup: Ubuntu 14.04, Django 1.10, Python 3.5 (in virtualenv).

Ich habe viele dieser Lösungen ohne Erfolg ausprobiert, aber dann fiel mir auf, dass das Apache-Fehlerprotokoll in meinem Fall zwei verschiedene Fehler enthält. Eine, die auftritt, wenn jemand versucht, eine Seite zu besuchen, eine andere beim Start. Ich habe das Startup verpasst, weil ich in der Regel ein paar Mal versucht habe, die Seite zu aktualisieren, und so sah ich nur den Fehler beim Besuch, der einige Male wiederholt wurde.

Ich suchte dann nach Lösungen für den Startfehler und die Lösung für diese Frage funktionierte für mich . In Kürze wird das mod_wsgi-Paket umlaufend aktualisiert.

Ich hatte seit Monaten Warnungen über die Nichtübereinstimmung in mod_wsgi-Versionen erhalten, aber plötzlich ergab das Apache-Fehler 500. Macht für mich keinen Sinn.

Meine Vermutung ist, dass dieser RuntimeError: populate() isn't reentrant-Fehler normalerweise ein Zeichen dafür ist, dass nach einem Startfehler gesucht werden sollte, der auf das tatsächliche Problem hinweist.

bei besuch

[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

anlaufen

[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'
2
Deleet

Ich hatte gerade das gleiche Problem, also sah ich mich um.

Jetzt habe ich es funktioniert, also dachte ich, ich sollte es mit euch teilen!

Alles, was ich tat, war chown user:group /to/path -R und chmod 770 /to/path -R noch einmal, und es hat funktioniert.

2
Behzad

Dies wird durch einen Fehler in Ihren Django-Einstellungen verursacht. Leider versteckt Django den Fehler hinter dieser generischen und nicht nützlichen Fehlermeldung.

Um das wahre Problem aufzudecken, Django/apps/registry.py öffnen und in Zeile 80 Folgendes ersetzen:

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

mit:

self.app_configs = {}

Auf diese Weise kann Django den Ladevorgang fortsetzen und den tatsächlichen Fehler anzeigen.

Ich habe diesen Fehler aus verschiedenen Gründen festgestellt. Einmal, weil ich einen schlechten Import in einer der admin.py meiner App hatte.

1
Cerin

Dieser Fehler wurde auch bei inkonsistenter Verwendung von Speicherplatz und Tabulator im Code generiert.

1
webbyfox

Ein Neustart des Apache-Servers für mich hat das Problem gelöst. Verwenden Sie dazu den Befehl $ Sudo service Apache2 restart

0
Shivam Kohli

Ich ging in den gleichen Fehler, nachdem ich die Reihenfolge dieser Einstellung geändert hatte: 

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',
)

wenn Sie es hier wieder auf die Reihenfolge setzen und Apache neu starten, wurde das Problem behoben.

0
Romain Jouin

Der Liste meinen Grund hinzufügen. Für mich lag es daran, dass ich einen Django-Dienst mit demselben Verzeichnis wie ein Prozessverzeichnis hatte. Das Umbenennen des Prozesses/Verzeichnisses behebt das Problem.

0
Mark

Das Virtualenv-Verzeichnis zu entfernen, die Virtualenv neu zu erstellen und dann alle Anforderungen neu zu installieren, behebte es für mich.

0
Farid El Nasire

In meinem Fall ist der Fehler aufgetreten, weil ein erforderliches Pip-Paket fehlte.

Also habe ich einen pip install -r requirements.txt gemacht, Apache neu gestartet und die Dinge funktionierten wieder.

0
flix

RuntimeError: populate() isn't reentrant

Kann alles sein, deshalb gibt es so viele verschiedene Antworten auf diese Frage.

Der Trick besteht darin, die Fehlermeldung direkt vor dem RuntimeError zu lesen. In Ihrem Fall scheint es einen Syntaxfehler in der Datei /extra/www/htmlquotes/quotes_Django/quotespage/admin.py in Zeile 15 zu geben, siehe:

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
0
Popieluch

In meinem Fall hatte ich einen custom renderer class für Django Rest Framework, aus irgendeinem Grund musste ich die Methode "get_context" der Renderer-Klasse überschreiben (vollständige Offenlegung: um Django toolbar korrekte SQL-Abfrageanzahl zu ermöglichen) 

Ich habe diese Klasse entfernt und neu eingesetzt. Es funktionierte. 

0
Karan Kumar

Ich hatte eine rekursive Django.setup(), z. B. habe ich versucht, eine Django.setup() in einen app/models.py zu schreiben. In der Stack-Ablaufverfolgung hat Django versucht, auf Folgendes hinzuweisen:

... "site-packages/Django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
...
... ./myproject/myapp/models.py ...

also ja, versuche nicht, Django einzurichten, während Django eingerichtet wird ...

0
ThorSummoner

Ich hatte dieses Problem und konnte keine Antwort finden, warum ich meine Commits zurückverfolgt habe. Anscheinend hatte ich aufgrund der automatischen Vervollständigung einen versehentlichen Import hinzugefügt, durch den das Setup beschädigt wurde.

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

Im Apache-Fehlerprotokoll: RuntimeError ("populate () ist nicht wiedereintrittsfähig")

In meiner Windows-Entwicklerumgebung funktionierte es einwandfrei, aber auf dem Ubuntu/Apache-Server ist ein Fehler aufgetreten.

0
Jan

Die Vielzahl der Antworten macht es deutlich; Dies ist ein generischer Fehler, der mehrere Ursachen haben kann, die normalerweise mit dem Laden von Apache/WSGI zusammenhängen.

Alle diese Antworten auf dieser Seite sollten als eine Art Checkliste dienen, und in dieser Hinsicht möchte ich die Hauptursache für diese Fehlerinstanz hinzufügen: Fehler beim Hinzufügen eines "Import os" zu Ihrer Datei "settings.py". 

Wir hatten einen Entwickler in unserem Team, der beabsichtigte, ein nicht mehr benötigtes Paket zu entfernen, und stattdessen 'import os' oben in der Datei production.py der Produktion entfernte. Nach einem Apache-Neustart konnte unsere Anwendung nicht neu gestartet werden, und wir haben den gefürchteten Fehler 'RuntimeError: populate () nicht wiedereintrittsfähig' erhalten.

Ein kurzer 'python manage.py check' enthüllte das Problem nicht, aber ein 'python settings.py' tat dies. Das os-Paket wurde nicht geladen.

Wenn Sie diesen Fehler haben, konzentrieren Sie Ihre Suche auf die Überprüfung Ihrer settings.py-Datei (en) und auch Ihrer WSGI-Datei.

0
Tom Halpin