with python3 produccion mod_wsgi how framework and python django apache

produccion - python3 django apache



Django populate() no es reentrante (5)

Al final, el problema que tuve fue que traté de ejecutar una segunda aplicación Django y no tenía definida la siguiente en mi configuración de Apache:

WSGIDaemonProcess ... WSGIProcessGroup ...

Acabo de enterarme de que puedes ejecutar una sola aplicación django sin definirlas, pero cuando ambas generan un conflicto.

Sigo recibiendo esto cuando intento cargar mi aplicación Django en producción. Intenté todas las respuestas de stackoverflow pero nada lo solucionó. Cualquier otra idea (Estoy usando Django 1.5.2 y Apache)

Traceback (most recent call last): File "/var/www/thehomeboard/wwwhome/wsgi.py", line 37, in <module> application = get_wsgi_application() File "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 14, in get_wsgi_application django.setup() File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 18, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 78, in populate raise RuntimeError("populate() isn''t reentrant") RuntimeError: populate() isn''t reentrant


Divulgación completa: "llenar () no se reentran" los errores pueden tener múltiples causas, y verificar cualquier configuración reciente o cambios en el programa es una muy buena idea.

Sin embargo, este error también puede ocurrir cuando se actualiza Apache, y un módulo ya no es válido / está dañado / necesita actualizarse. Esto se nos ocurrió en Webfaction después de una actualización de Apache (pero puede ocurrir en cualquier host).

Usar el script de reinicio de Apache NO lo ayudará, porque los módulos permanecen cargados en el reinicio. Dependiendo de su sistema, y ​​si los mods están almacenados en caché incluso cuando apache Apache, esto puede ayudar.

Parar por completo a Apache. En Webfaction, eso es:

~/webapps/<YOUR WEB APP>/apache2/bin/stop

Espere unos segundos, y luego ...

~/webapps/<YOUR WEB APP>/apache2/bin/start

Eso debería corregir el problema. Si su sistema almacena en caché las modificaciones, es posible que deba vaciar la caché antes de comenzar.

¡Espero que esto ayude!

Aquí está el enlace que me dieron (sé que el error es diferente, pero tuvimos esto por la misma razón con el error de llenado también):

https://statusblog.webfaction.com/2018/05/16/regarding-glibc_private-errors-in-your-python-application/


Este RuntimeError ocurrió por primera vez después de actualizar a Django 1.7 (y todavía está presente con Django 1.8). Por lo general, es causada por una aplicación de Django que genera un error, pero ese error se traga de alguna manera.

Aquí hay una solución que funciona para mí. Agréguelo a su wsgi.py y el error real se debe registrar:

import os import time import traceback import signal import sys from django.core.wsgi import get_wsgi_application try: application = get_wsgi_application() print ''WSGI without exception'' except Exception: print ''handling WSGI exception'' # Error loading applications if ''mod_wsgi'' in sys.modules: traceback.print_exc() os.kill(os.getpid(), signal.SIGINT) time.sleep(2.5)

Vea este hilo en modwsgi para más detalles.


Habrá muchas razones para que las causas se populate() isn''t reentrant error de populate() isn''t reentrant . Si miras el registry.py en tu aplicación de django probablemente dentro de este directorio
/python2.7/site-packages/django/apps

# app_config should be pristine, otherwise the code below won''t # guarantee that the order matches the order in INSTALLED_APPS. if self.app_configs: raise RuntimeError("populate() isn''t reentrant")

Como puede ver en el comentario, dice que app_config debe ser prístino. Lo que significa que si una de las configuraciones no es correcta o falta la biblioteca requerida, aumentará este error de llenado. Recibí este error porque me olvidé de la instalación de sqlite. Incluso como ve, no se mencionan posibles causas en la excepción. Instalé sqlite por este comando en Debian

pip install pysqlite

Solucionó mi problema. Mi excepción debido a la falta de pysqlite. Es posible que haya faltado otro paquete requerido o errores en su settings.py


Para aquellos que usan AWS Lambda (y opcionalmente usan zappa), esto puede suceder cuando el tamaño del código y las dependencias comprimidas en un paquete de implementación excede los 250 MB después de la descompresión.

Normalmente, el archivo zip solo puede tener 50 MB, pero puede descomprimirse a más de 250 MB, por lo que es posible que deba descomprimir manualmente el paquete de implementación para comprobar que no sea demasiado grande cuando se descomprime.

https://docs.aws.amazon.com/lambda/latest/dg/limits.html