Django arrête de travailler avec RuntimeError: populate () n'est pas reentrant

j'ai développé une application web Django déployée sur un serveur Apache avec WSGI, et tout s'est bien passé. Aujourd'hui, j'ai apporté quelques modifications mineures à mon application admin.py dans le but de personnaliser L'interface d'administration de Django, et j'ai d'abord fait une erreur de syntaxe (une parenthèse non fermée). Cela signifie que lorsque j'ai touché wsgi.py et chargé le code (J'ai WSGI tournant en mode démon sur mon hôte virtuel), mon site web a été remplacé par un serveur interne Erreur parce que WSGI s'est arrêté quand il a frappé l'erreur de syntaxe.

donc j'ai corrigé l'erreur de syntaxe, j'ai vérifié que je n'avais plus de manage.py check , et j'ai touché wsgi.py pour me redéployer. Mais mon site Web affiche toujours une erreur de serveur interne! En vérifiant les journaux D'Apache, voici ce que je vois:

[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

la première série d'erreurs montre WSGI failing due à l'erreur de syntaxe dans mon admin.py . Cependant, la deuxième série d'erreurs semble montrer une erreur interne à Django:

RuntimeError: populate() isn't reentrant

lancé de la méthode populate de registry.py .

googler ce message d'Erreur renvoie étonnamment peu d'informations, aucune provenant de la documentation Django. Apparemment , ça peut arriver si vous nommez une application deux fois dans votre settings.py , mais je ne le ferai pas. Plus important encore, je n'ai pas changé settings.py depuis le moment où le site web fonctionnait bien -- la seule chose que je changé était admin.py .

j'ai essayé d'inverser tous les changements que j'ai faits, donc tout mon code Python est de retour dans l'état où il était lorsque le site web fonctionnait -- et j'obtiens toujours l'erreur populate() isn't reentrant quand j'essaie de faire WSGI recharger le code!

j'ai également essayé de commenter différentes applications dans la section INSTALLED_APPS de settings.py , et même avec seulement 'django.contrib.staticfiles activé l'erreur se produit toujours. Bizarrement, j'ai toujours l'erreur même si je commente tous les applications -- Django jette l'erreur même quand il ne charge pas d'applications!

est-ce que quelqu'un sait ce qui se passe ici? Ou une meilleure façon pour moi de corriger cette erreur, puisque le traceback dans le journal Apache n'est pas très utile?

Notes: J'utilise Django 1.7, Apache 2.2, et Python 2.7.

67
demandé sur Graham Dumpleton 0000-00-00 00:00:00

22 réponses

L'administrateur de mon serveur a redémarré Apache, et cela a réglé ce problème par magie. Les mêmes fichiers Python chargés sans causer populate() isn't reentrant . J'ai même essayé de charger un autre fichier avec une erreur de syntaxe, puis de le corriger, et le serveur a pu charger le nouveau fichier et exécuter correctement sans problème.

Je ne sais toujours pas ce qui allait mal, mais je note que cela a répondu puisque le problème est parti. (Eh bien, je vais marquer comme répondu DÈS QUE StackOverflow me permet d'accepter ma propre réponse.)

Update : après avoir continué à recevoir cette erreur quand je télécharge accidentellement Python avec des erreurs de syntaxe, j'ai trouvé une solution de contournement qui est plus facile que redémarrer Apache. Lorsque WSGI commence à lancer l'erreur populate() isn't reentrant , je remplace wsgi.py de mon projet Django par cette simple fonction:

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

puis je recharge mon site web, et le processus de démon WSGI redémarre (ce que je peux dire en regardant le log d'Apache, même si le site s'affiche toujours la même erreur 500).

si je change alors wsgi.py pour revenir à la normale et recharger à nouveau, WSGI récupère avec succès mon code sans lancer populate() isn't reentrant (en supposant que je n'ai pas d'erreurs de syntaxe cette fois). Donc Apache n'a pas besoin de redémarrer, juste le processus WSGI, et je peux le faire sans les privilèges de root.

50
répondu Edward 2014-11-24 19:26:27

je sais que c'est une vieille réponse mais je vais contribuer avec ma solution:

comme un moyen de diagnostiquer la source du problème exécuter manage.py check et voir si vous trouvez quelque chose là

dans mon cas, une exigence périmée était le problème et django ne parvenait pas à importer un sous-module

assurez-vous que vos exigences sont à jour

21
répondu Jesus Gomez 2017-04-14 15:56:17

si vous obtenez cette erreur en utilisant Google App Engine, vérifiez vos journaux pour d'autres erreurs qui pourraient être à l'origine de cette erreur.

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

vous ne pouvez pas utiliser SQLite avec Google App Engine donc en commentant la section DATABASES de settings.py a arrêté cette erreur et l'erreur RuntimeError("populate() isn't reentrant") aussi.

9
répondu donturner 2015-05-14 17:00:02

ce n'est pas une réponse mais un réflexe.

lorsque vous passez à django 1.7 et que vous avez une erreur 500 et Rechargez votre page, Apache dit "populate () n'est pas reentrant". Je pense que C'est quand vous chargez votre page, Apache charge tous les modules dont vous avez besoin pour votre application et quand l'erreur est prise en charge il ne décharge pas le module. Ainsi, lorsque vous rechargez votre page, apache charge à nouveau ces modules mais il est déjà chargé. Donc, apache, dit "remplir() n'est pas réentrant".

j'ai deux actions pour corriger ceci : redémarrer apache, ou corriger l'erreur qui gère la première erreur 500.

j'espère que cela vous aidera.

5
répondu Vianney Thurotte 2018-07-11 19:27:58

vous pouvez être en mesure de le corriger sans redémarrer Apache en touchant un fichier (autre que wsgi.py) qui est au début du processus de chargement. Par exemple, votre fichier de paramètres:

$ touch settings.py

Je ne l'ai pas résolu correctement non plus, mais plus d'informations dans ma question ici: changement de code surveillance dysfonctionnement avec Django 1.7 sur mod-wsgi

4
répondu seddonym 2017-05-23 11:47:21

cela ressemble à une belle collection de réponses valides pour la même erreur Apache mod-wsgi, chaque gars affichant celui qui travaille pour lui/elle, donc voici le mien:

n'oubliez pas de mettre à jour vos exigences de projet après le déploiement:)

3
répondu José L. Patiño 2016-01-27 14:24:36

Apache stocke le fichier wsgi dans son cache. désactiver la mise en cache Apache des fichiers python

Donc d'abord supprimer le fichier wsgi et redémarrez votre acpache puis ajouter wsgi fichier et relancez apache.

3
répondu Abhishek Lodha 2017-05-23 11:47:21

j'ai connu ce même problème, et la source de l'erreur pour moi était juste une erreur de syntaxe dans un fichier que je travaillais avec. Après avoir corrigé la faute de frappe, l'erreur populate() is not reentrant a disparu.

si vous exécutez django à partir d'un script wsgi, vous pourriez être en mesure d'identifier la typo en exécutant simplement le script wsgi à partir de la ligne de commande. Par exemple:

cd /usr/local/www/wsgi-scripts/
python djangolauncher.wsgi
3
répondu Peter 2018-05-08 18:36:35

je viens de faire face au même problème donc j'ai commencé à regarder autour.

maintenant je l'ai fait fonctionner, donc j'ai pensé que je devrais le partager avec vous les gars!

Tout ce que j'ai fait c'est refaire chown user:group /to/path -R et chmod 770 /to/path -R et ça a marché.

2
répondu Behzad 2015-11-11 10:05:06

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

j'ai essayé plusieurs de ces solutions sans succès, mais j'ai remarqué que le journal des erreurs Apache contient deux erreurs différentes dans mon cas. Une qui se produit quand quelqu'un essaie de visiter une page, une autre qui se produit au démarrage. J'ai raté le démarrage parce que j'ai essayé de rafraîchir la page quelques fois et n'ai donc vu que l'erreur de visite répétée quelques fois.

J'ai alors cherché des solutions à l'erreur de démarrage à la place et la solution à cette question a fonctionné pour moi . En bref, il s'agit de mettre à jour le paquet mod_wsgi de manière détournée.

j'avais reçu des avertissements pendant des mois au sujet de l'inadéquation dans les versions mod_wsgi , mais tout d'un coup, il en est résulté une erreur Apache 500. Ça n'a aucun sens pour moi.

à mon avis, cette erreur RuntimeError: populate() isn't reentrant est habituellement un signe que il faut rechercher une erreur de démarrage, qui indique le vrai problème.

en visite

[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

start up

[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
répondu Deleet 2017-04-13 12:22:47

j'ai eu ce problème et je n'ai pas pu trouver de réponse pourquoi jusqu'à ce que je revienne en arrière mes commits. Apparemment j'avais ajouté une importation accidentelle, à cause de l'auto-completion, qui a foiré la configuration.

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

dans le journal des erreurs apache: RuntimeError("remplir() n'est pas réentrant")

cela a bien fonctionné dans mon environnement Windows dev mais a échoué sur le serveur ubuntu/apache.

1
répondu Jan 2015-06-12 01:25:26

j'allais dans la même erreur après avoir changé l'ordre de ce paramètre:

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

le remettre à l'ordre ici avant et redémarrer apache a réglé le problème.

1
répondu Romain Jouin 2015-11-01 18:29:20

cela peut aussi être causé par la présence d'un duplicata dans la rubrique INSTALLED_APPS

1
répondu Alvin 2016-01-19 18:17:14

dans mon cas, j'ai eu un custom renderer class pour Django Rest Framework , pour un certain but, j'ai dû remplacer la méthode de la classe renderer "get_context" (divulgation complète : pour faire django toolbar donner le nombre de requête SQL correct)

j'ai supprimé cette classe et redéployés. Il A Travaillé.

1
répondu Karan Kumar 2016-08-12 12:16:39

je sais que cela fait longtemps que cette question n'a pas été posée, mais je viens de tomber sur cette question en raison d'un problème que je n'ai pas vu discuté ici. J'ai eu l'erreur RuntimeError: populate() isn't reentrant due à SELinux sur CentOS 7. J'avais Django servi à partir d'un répertoire personnel, et j'ai simplement dû activer le booléen SELinux qui permettait de lire les répertoires personnels, car l'erreur de populate() était due à un problème de permissions. La solution pour moi était setsebool -P httpd_read_user_content 1 . J'espère que cela aide quelqu'un ayant ce problème.

1
répondu Ad Astra 2017-03-08 13:39:42

dans mon cas, l'erreur s'est produite parce qu'il manquait un paquet pip requis.

donc j'ai fait un pip install -r requirements.txt , j'ai redémarré apache et les choses ont fonctionné à nouveau.

1
répondu flix 2017-07-26 09:39:53

dans mon cas, j'ai eu une importation circulaire, qui cause une erreur qui casse la méthode de la population.

0
répondu Luis Carlos Mejia 2017-08-03 22:11:20

j'ai résolu le problème en ajoutant __init__.py à mon dossier apps.

touch /mainprojectfolder/projectfolderwhichcontainswsgi.py/apps/__init__.py

ça a marché!

0
répondu cKurultayKalkan 2017-10-03 22:01:14

À jeter dans mes 2 centimes d'Euro:

j'ai recréé une configuration de travail dans Docker. La configuration du Nouveau Docker a échoué avec

populate isn't reentrant

qui semble être une erreur générique. Dans mon cas, j'ai oublié que

pip install Django

installe la version la plus récente ( 2.0 ), au lieu de la version requise 1.11 . Changer pour

pip install Django==1.11

a résolu mon problème.

0
répondu Olaf Dietsche 2018-01-01 13:43:14

suppression du répertoire virtualenv, recréation du virtualenv, puis réinstallation de toutes les exigences fixées pour moi.

0
répondu Farid El Nasire 2018-02-28 18:38:36

je pense que c'est une erreur générique quand quelque chose ne va pas avec settings.py . Parfois, je peux trouver le problème par essai et erreur en supprimant les applications installées une à une. Dans certains cas, ce n'est pas lié aux applications installées. Mais d'après mon expérience, dans tous les cas, c'est un problème dans le fichier settings.py .

0
répondu Noel 2018-03-01 09:09:01

la multitude de réponses le montre clairement; il s'agit d'une erreur générique qui peut avoir plusieurs causes profondes, typiquement liées au chargement Apache/WSGI.

toutes ces réponses sur cette page devraient fonctionner comme une sorte de liste de contrôle, et dans cet ordre d'idées, je veux ajouter la cause fondamentale de mon instance de cette erreur: Échec d'ajouter un "os d'importation" à votre settings.py file.

plus précisément, nous avions un développeur dans notre équipe qui avait l'intention de supprimer un paquet non nécessaire, et à la place supprimé "OS importation" du haut de la production settings.py file. Après un redémarrage d'apache, notre application ne redémarrait pas et nous avons reçu le redouté r

0
répondu