web-dev-qa-db-fra.com

Django cesse de fonctionner avec RuntimeError: populate () n'est pas réentrant

J'ai développé une application Web Django déployée sur un serveur Apache avec WSGI, et tout se passe bien. Aujourd'hui, j'ai apporté quelques modifications mineures au admin.py de mon application afin de personnaliser l'interface d'administration Django intégrée, et j'ai tout d'abord fait une erreur de syntaxe (une parenthèse non fermée). Cela signifiait que lorsque j'ai touché wsgi.py et chargé le code (WSGI fonctionnant en mode démon sur mon hôte virtuel), mon site Web a été remplacé par une erreur de serveur interne car WSGI s'est arrêté lorsqu'il a rencontré l'erreur de syntaxe.

J'ai donc corrigé l'erreur de syntaxe, vérifié que je n'en avais plus avec manage.py check et touché wsgi.py pour le redéployer. Mais mon site Web affiche toujours une erreur de serveur interne! En consultant les journaux 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 indique l'échec de WSGI en raison de l'erreur de syntaxe dans mon admin.py. Cependant, la deuxième série d’erreurs semble indiquer une erreur interne à Django: 

RuntimeError: populate() isn't reentrant

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

Googler ce message d'erreur retourne étonnamment peu d'informations, aucune de la documentation Django. Apparemment, cela peut parfois arriver si vous nommez une application deux fois dans votre settings.py, mais je ne le fais pas. Plus important encore, je n'ai pas changé de settings.py depuis le moment où le site Web fonctionnait bien - la seule chose que j'ai changée était admin.py

J'ai essayé de revenir sur toutes les modifications apportées, de sorte que tout mon code Python soit de nouveau dans l'état où il se trouvait lorsque le site Web fonctionnait - et j'obtiens toujours l'erreur populate() isn't reentrant lorsque j'essaie de faire que WSGI recharge le code!

J'ai également essayé de commenter différentes applications dans la section INSTALLED_APPS de settings.py, et même avec l'option 'Django.contrib.staticfiles' activée, l'erreur se produit toujours. Bizarrement, je reçois toujours l'erreur même si je commentais toutes les applications - Django lève l'erreur même si aucune application n'est en cours de chargement!

Est-ce que quelqu'un sait ce qui se passe ici? Ou un meilleur moyen pour moi de déboguer cette erreur, car la trace dans le journal Apache est plutôt inutile?

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

72
Edward

L'administrateur de mon serveur a redémarré Apache, ce qui a résolu le 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 réparer, et le serveur a pu charger le nouveau fichier et s'exécuter correctement sans aucun problème. 

Je ne sais toujours pas ce qui n'allait pas, mais je note ceci comme une réponse, car le problème a disparu. (Eh bien, je le marquerai comme une réponse dès que StackOverflow me permettra d’accepter ma propre réponse.)

Mise à jour : Après avoir continué à avoir cette erreur lorsque j'ai téléchargé accidentellement Python avec des erreurs de syntaxe, j'ai trouvé une solution de contournement plus facile que de redémarrer Apache. Lorsque WSGI commence à générer l'erreur populate() isn't reentrant, je remplace le wsgi.py de mon projet Django par cette fonction simple:

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

Ensuite, je recharge mon site Web et le processus du démon WSGI redémarre (ce que je peux dire en consultant le journal Apache, même si le site Web affiche toujours la même erreur 500).

Si je modifie ensuite wsgi.py en normal et le recharge à nouveau, WSGI récupère correctement mon code sans lancer populate() isn't reentrant (en supposant que je n’ai aucune erreur de syntaxe cette fois). Ainsi, l'intégralité d'Apache n'a pas besoin de redémarrer, il suffit du processus WSGI, et je peux le faire sans privilèges root.

54
Edward

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

Pour diagnostiquer la source du problème, lancez manage.py check et voyez si vous y trouvez quelque chose.

Le problème était dans mon cas obsolète et Django n’a pas réussi à importer un sous-module.

Assurez-vous que vos exigences sont à jour

27
Jesus Gomez

Ce n'est pas une réponse mais une réflexion.

Lorsque vous effectuez une mise à niveau vers Django 1.7 et que vous avez une erreur 500 et que vous rechargez votre page, Apache indique que "populate () n'est pas réentrant". Je pense que lorsque vous chargez votre page, Apache charge tous les modules dont vous avez besoin pour votre application et lorsque l'erreur est gérée, elle 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 que "populate () n'est pas réentrant".

J'ai deux actions pour corriger ceci: Redémarrez Apache ou corrigez l'erreur qui gère la première erreur 5OO.

J'espère que cela vous aidera.

4
Vianney Thurotte

Vous pourrez peut-être résoudre le problème sans redémarrer Apache en touchant un fichier (autre que wsgi.py) qui se trouve au début du processus de chargement. Par exemple, votre fichier de paramètres:

$ touch settings.py

Je n'ai pas bien résolu ce problème non plus, mais plus d'informations dans ma question ici: La surveillance de la modification du code ne fonctionnait pas correctement avec Django 1.7 sur mod-wsgi

4
seddonym

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

Donc, commencez par supprimer le fichier wsgi et redémarrez votre acpache, puis ajoutez à nouveau le fichier wsgi et redémarrez Apache.

3
Abhishek Lodha

J'ai rencontré le même problème et la source de l'erreur pour moi était simplement une erreur de syntaxe dans un fichier avec lequel je travaillais. 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 pourrez peut-être identifier la faute de frappe 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
Peter

Cela ressemble à une belle collection de réponses valides pour la même erreur Apache mod-wsgi, chaque type postant celui qui lui convient, voici donc le mien:

N'oubliez pas de mettre à jour les exigences de votre projet après le déploiement :)

3
José L. Patiño

Je sais que cette question a été posée il y a longtemps, mais je me suis heurté à cette question en raison d'un problème que je n'ai pas vu aborder ici. Je recevais l'erreur RuntimeError: populate() isn't reentrant due à SELinux sur CentOS 7. J'avais Django servi depuis un répertoire personnel et je devais simplement activer le booléen SELinux autorisant la lecture des répertoires personnels, car l'erreur 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.

2
Ad Astra

Configuration: Ubuntu 14.04, Django 1.10, Python 3.5 (dans virtualenv).

J'ai essayé plusieurs de ces solutions sans succès, mais j'ai ensuite remarqué que le journal des erreurs Apache contenait deux erreurs différentes dans mon cas. Cela se produit lorsque quelqu'un essaie de visiter une page, et un autre au démarrage. J'ai raté la première, car j'essayais généralement de rafraîchir la page plusieurs fois et je ne voyais donc que l'erreur lors de la visite répétée plusieurs fois.

J'ai ensuite 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 façon détournée.

Cela faisait des mois que je recevais des avertissements concernant l'inadéquation entre les versions mod_wsgi, mais tout à coup, cela a entraîné une erreur Apache 500. Cela n'a aucun sens pour moi.

Mon hypothèse est que cette erreur RuntimeError: populate() isn't reentrant est généralement un signe qu'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

commencez

[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

Je viens de faire face au même problème alors j'ai commencé à regarder autour de moi.

Maintenant, ça marche, alors j'ai pensé que je devrais le partager avec vous!

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

2
Behzad

Ceci est dû à un bug dans vos paramètres Django quelque part. Malheureusement, Django cache le bogue derrière ce message d'erreur générique et non utile.

Pour révéler le vrai problème, ouvrez Django/apps/registry.py et autour de la ligne 80, remplacez:

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

avec:

self.app_configs = {}

Cela permettra à Django de continuer à charger et de révéler l'erreur réelle.

J'ai rencontré cette erreur pour plusieurs causes différentes. Une fois c'était parce que j'avais une mauvaise importation dans l'un des fichiers admin.py de mon application.

1
Cerin

Cette erreur est également générée si l'utilisation inconsistante de l'espace et de la tabulation dans le code.

1
webbyfox

Le redémarrage du serveur Apache pour moi a résolu le problème. Vous pouvez le faire en utilisant la commande $ Sudo service Apache2 restart

0
Shivam Kohli

J'allais dans cette 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 sur l'ordre ici avant et le redémarrage d'Apache ont corrigé le problème.

0
Romain Jouin

Ajout de ma raison à la liste. Pour moi, c’est parce que j’avais un service Django nommé avec le même répertoire que le répertoire de processus. Renommer le processus/répertoire corrige le problème.

0
Mark

La suppression du répertoire virtualenv, la recréation de virtualenv, puis la réinstallation de toutes les exigences ont résolu le problème.

0
Farid El Nasire

Dans mon cas, l'erreur est survenue car un paquet pip requis était manquant.

J'ai donc fait un pip install -r requirements.txt, redémarré Apache et tout a fonctionné à nouveau.

0
flix

Dans mon cas, j'avais custom renderer class pour Django Rest Framework; pour une raison quelconque, je devais remplacer la méthode "get_context" de la classe de rendu (divulgation complète: pour que Django toolbar donne le nombre correct de requêtes SQL) 

J'ai enlevé cette classe et redéployé. Ça a marché. 

0
Karan Kumar

J'ai eu une Django.setup() récursive, par exemple, j'ai essayé d'écrire une Django.setup() à l'intérieur d'un app/models.py, dans la trace de la pile que Django a essayé de signaler à proximité:

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

alors, assurez-vous de ne pas essayer de configurer Django pendant l'installation de Django ...

0
ThorSummoner

J'avais ce problème et je ne trouvais pas de réponse avant de revenir en arrière sur mes commits. Apparemment, j'avais ajouté une importation accidentelle, à cause de l'auto-complétion, qui avait gâché la configuration.

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

Dans le journal des erreurs Apache: RuntimeError ("populate () n'est pas réentrant")

Cela a bien fonctionné dans mon environnement Windows dev mais a échoué sur le serveur Ubuntu/Apache.

0
Jan

La multitude de réponses le dit clairement. Il s'agit d'une erreur générique pouvant avoir plusieurs causes principales, généralement liées au chargement d'Apache/WSGI.

Toutes ces réponses sur cette page devraient fonctionner comme une sorte de liste de contrôle, et dans cet esprit, je veux ajouter la cause fondamentale de mon instance de cette erreur: échec lors de l'ajout d'un "import os" à votre fichier settings.py. 

En particulier, un développeur de notre équipe avait l'intention de supprimer un package inutile et, au lieu de cela, a supprimé «import os» en haut du fichier de production settings.py. Après un redémarrage d'Apache, notre application n'a pas redémarré et nous avons reçu l'erreur redoutée 'RuntimeError: populate () is reentrant'.

Une vérification rapide de «python manage.py» ne révélait pas le problème, mais un «python settings.py». le paquet os n'a pas été chargé.

Si vous rencontrez cette erreur, concentrez votre recherche sur la vérification de votre fichier settings.py ainsi que de votre fichier WSGI.

0
Tom Halpin