Estoy ejecutando una aplicación django en twisted usando los scripts django-on-twisted desde this site.El servidor retorcido se cuelga inesperadamente al ejecutar django
Todas las solicitudes son atendidas por un servidor nginx que reenvía las solicitudes relevantes a twisted. Tengo una configuración de URL para una API, que básicamente solo recibe solicitudes de obtención y realiza algún procesamiento en los parámetros de obtención antes de enviar una respuesta. Sin embargo, cuando un cliente específico está presionando la API, el servidor retorcido simplemente se apaga. Pegado a continuación es el registro de Nginx:
the.ip.of.client - - [21/Apr/2012:11:30:36 -0400] "GET /api/url/?get=params&more=params HTTP/1.1" 499 0 "-" "Java/1.6.0_24"
Los troncos retorcidos muestran nada más que paradas retorcidos que trabajan en este punto. Con el código de error 499, supongo que el cliente cerró la conexión de forma inesperada, lo cual no tengo ningún problema. Si el cliente recibe la respuesta o no, no es importante para mí. Aquí está la vista de Django relevante:
def api_url(request):
if request.GET:
get_param = request.GET.get('get', [''])[0]
more_param = request.GET.get('more', [''])[0]
#some processing here based on the get params
return HttpResponse('OK')
else:
raise Http404
La solicitud del cliente es una solicitud válida y no afecta al procesamiento de una manera adversa. Lo he probado desde el caparazón. Cuando lo probé en el servidor de desarrollo django, se bloqueó de la misma manera sin dejar ningún rastro de recibir la solicitud. Todo funciona perfectamente bien cuando se prueba desde el navegador. Además, el servidor retorcido funciona bien para todos los casos de uso regular. Esta es la primera vez que me enfrento a un problema. Cualquier ayuda o punteros serán apreciados.
¿Qué significa "apaga" decir? ¿Sale limpiamente? ¿Una señal hace que salga? –
El servidor retorcido no escribe nada en los registros. Estoy bastante seguro de que no es una salida limpia. Simplemente deja de funcionar. ¿Alguna idea de cómo podría atrapar la señal de salida? – tapan
Si está utilizando bash, entonces '$?' Ayudará. Desde la página del hombre bash: **? Se expande al estado de salida de la tubería de primer plano ejecutada más recientemente. ** Entonces, por ejemplo, 'twistd ...; echo $? ' –