Ho un'applicazione python che deve eseguire un'applicazione proprietaria (che si blocca di tanto in tanto) circa 20.000 volte al giorno.Come avviare l'applicazione di arresto (raramente) nel sottoprocesso
Il problema è quando crash dell'applicazione, Windows fa scattare automaticamente WerFault che manterrà programma di impiccagione, quindi python's subprocess.call()
aspetteranno per sempre l'input dell'utente (che l'applicazione deve funzionare nei fine settimana, nei giorni festivi, 24/7 ... quindi questo è non accettabile).
Se però sull'utilizzo sleep; poll; kill; terminate
ma ciò significherebbe perdere la capacità di utilizzare communicate()
, l'applicazione può essere eseguito da pochi millisecondi a 2 ore, timeout in modo taratura fissa sarà inefficace
Ho anche provato turning on automatic debugging (utilizzare uno script che avrebbe fare un crash dump di un'applicazione e terminare l'id), ma in qualche modo questo howto non funziona sul mio server (WerFault appare ancora e attende l'input dell'utente).
Anche altri tutorial come this non hanno avuto alcun effetto.
Domanda: c'è un modo per impedire a WerFault di visualizzare (in attesa di input dell'utente)? questo è più sistema, quindi, la programmazione domanda
domanda alternativa: c'è un grazioso modo in Python come rilevare crash dell'applicazione (se è stato visualizzato WerFault)
È possibile aggiungere l'applicazione in arresto alla lista di esclusione di wer e quindi dipendere dai dump locali per il dump di arresto anomalo. Guarda http://msdn.microsoft.com/en-us/library/windows/desktop/bb513617%28v=vs.85%29.aspx – nanda
hai visto http://stackoverflow.com/questions/5069224/handling -subprocess-crash-in-windows – n611x007