2012-03-26 18 views
8

Recientemente implementé una aplicación en un host compartido (webfaction) y, sin ningún motivo aparente, mi sitio no se carga (funcionó hasta hoy).Depuración "final prematuro de encabezados de script" - WSGI/Django

Es una aplicación de django, pero el django.log ni siquiera se crea; la única pista es que en uno de los registros, recibo el mensaje de error: "Fin de encabezados de script prematuros", identificando mi archivo wsgi como fuente.

He intentado agregar el registro a mi archivo wsgi, pero no puedo encontrar ningún registro creado para él. ¿Hay alguna forma recomendada de solucionar este error? Estoy a punto de arrancarme el pelo.

Mi archivo WSGI:

import os 
import sys 

from django.core.handlers.wsgi import WSGIHandler 

import logging 

logger = logging.getLogger(__name__) 


os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
os.environ['CELERY_LOADER'] = 'django' 

virtenv = os.path.expanduser("~/webapps/django/oneclickcosvirt/") 
activate_this = virtenv + "bin/activate_this.py" 
execfile(activate_this, dict(__file__=activate_this)) 

# if 'VIRTUAL_ENV' not in os.environ: 
# os.environ['VIRTUAL_ENV'] = virtenv 

sys.path.append(os.path.dirname(virtenv+'oneclickcos/')) 

logger.debug('About to run WSGIHandler') 

try: 
     application = WSGIHandler() 
except (Exception,), e: 
     logger.debug('Exception starting wsgihandler: %s' % e) 
     raise e 

Respuesta

2

Es difícil definir razón exacta del error sin registro de servidor web:

soluciones probables: http://code.google.com/p/modwsgi/wiki/InstallationIssues#Multiple_Python_Versions

y D http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions

Q: ¿Por qué veo el mensaje de error 'final prematuro de los encabezados del script' en Registros de error de Apache.

A: Si usa el modo daemon, este es un síntoma del bloqueo del proceso del demonio mod_wsgi al manejar una solicitud. Probablemente también verás el mensaje 'falla de segmentación'. Consulte la respuesta a la pregunta sobre "falla de segmentación" más arriba.

Este mensaje de error también puede ocurrir cuando no ha configurado correctamente Apache y su archivo de script WSGI se está ejecutando como una secuencia de comandos CGI en su lugar.

Espero que ayude

+0

Gracias por esto. Resolví este problema instalando gunicornio al final. – Marcin

+3

Tuve el mismo problema causado por una extensión de Python C. Agregué "WSGIApplicationGroup% {GLOBAL}" a mi configuración de Apache y resolvió el problema. La directiva obliga a ejecutar la aplicación WSGI dentro del primer intérprete de Python, lo que elimina los bloqueos que hacen que Apache reinicie los procesos. Puede leer más sobre esto en [Google Wiki] (https://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API) – Imraan

+1

1. el registro del servidor web no ayudará porque el bloqueo ocurre antes que nada útil se registra, 2. esto ocurre incluso cuando Apache está configurado "correctamente", las configuraciones erróneas causan errores registrados, no segfaults ... – Cerin

Cuestiones relacionadas