2012-01-28 13 views
7

Ho recentemente creato una pagina di controllo della versione dalla mia applicazione per gestire il processo di distribuzione.Gunicorn :: ricarica dall'applicazione stessa

(Sì, lo so, GitHub + ganci sono meglio di riscrivere da zero ma siamo in Iran e il nostro amato governo ha bloccato tutte le connessioni ssh ad di fuori del paese:.. (()

Ci è un'azione di unione + ricarica nella pagina. l'unione funziona come le altre parti, ma la parte di ricaricamento fallisce senza alcun messaggio. Ho aggiunto la riga sudo per il comando kill e l'utente del processo worker ha abbastanza autorizzazioni. il codice forma django shell e ha ricaricato il processo

C'è qualche restrizione per ricevere segnali, come ad esempio i lavoratori che non sono in grado di ricaricare il loro master?

Ecco i relativi codici:

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) 

risposta

1

Indovina la parte superiore della mia testa è che il riavvio non funziona perché il processo chiamando la ricarica viene ucciso. Forse provare a demonizzare un sottoprocesso che esce dopo aver chiamato la ricarica? Date un'occhiata a questo post:

spawning process from python