Mam aplikację python, która musi wykonać zastrzeżoną aplikację (która rozbija się od czasu do czasu) około 20 000 razy dziennie.Jak uruchomić awaryjną (rzadko) aplikację w podprocesie
Problem jest, gdy awarie aplikacji, Windows automatycznie wyzwala WerFault który będzie na bieżąco programu powieszenie, co python's subprocess.call()
będzie wiecznie czekać na wejście użytkownika (że aplikacja musi pracować w weekendy, święta, 24/7 ... tak to jest nie do przyjęcia).
Jeśli choć o użyciu sleep; poll; kill; terminate
ale to oznaczałoby utratę możliwości korzystania communicate()
, aplikacja może działać od kilku milisekund do 2 godzin, więc ustawienie ustalony limit czasu będzie nieskuteczna
Próbowałem też turning on automatic debugging (użyć skryptu który zrób zrzut awaryjny aplikacji i zamknij id), ale jakoś to howto nie działa na moim serwerze (WerFault wciąż pojawia się i czeka na wejście użytkownika).
Kilka innych samouczków, takich jak this, również nie przyniosło żadnego efektu.
Pytanie: czy istnieje sposób zapobiegania wyświetlaniu się WerFault (oczekiwanie na wprowadzenie danych przez użytkownika)? to bardziej Następnie system programowania pytanie w
pytanie Alternatywne: czy istnieje wdzięku sposób w Pythonie, jak wykryć awarię aplikacji (czy WerFault została wyświetlona)
Możesz dodać aplikację powodującą awarię do listy wykluczeń, a następnie polegać na lokalnych zrzutach dla zrzutu awaryjnego. Zobacz http://msdn.microsoft.com/en-us/library/windows/desktop/bb513617%28v=vs.85%29.aspx – nanda
czy widziałeś http://stackoverflow.com/questions/5069224/handling -subprocess-crash-in-windows – n611x007