2012-01-28 13 views
7

Recientemente he creado una página de control de versiones desde mi aplicación para administrar el proceso de implementación.Gunicorn :: volver a cargar desde la propia aplicación

(Sí, lo sé, GitHub + ganchos son mejores que volver a escribir desde cero, sino que están en Irán y nuestro gobierno amada ha bloqueado todas las conexiones ssh a fuera del país:.. (()

Hay es una acción de fusión + recarga en la página. La fusión funciona como las otras partes, pero la parte de recarga falla sin ningún mensaje. He añadido una fila sudo para el comando kill y el usuario del proceso de trabajo tiene suficiente permiso. Incluso ejecuté el código de shell django y recargó el proceso.

¿Hay alguna restricción para recibir señales, como que los trabajadores no puedan volver a cargar su master?

Así es como los correspondientes códigos:

def command(x): 
    return str(Popen(x.split(' '), stdout=PIPE).communicate()[0]) 

pid = open(PATH + "/logs/gunicorn.pid").readline().strip() 
cmd = "sudo kill -HUP %s" % pid 
content += command(cmd) 

Respuesta

1

Guess de la parte superior de la cabeza es que el arranque no está funcionando porque el proceso llamando a la recarga se mató. Tal vez intente demonizar un subproceso que se cierra después de llamar a la recarga? Eche un vistazo a esta publicación:

spawning process from python

Cuestiones relacionadas