2017-05-03 4 views
0

wirft Ich habe ein Python-Skript. Ich habe geplant, dass es monatlich im Windows-Scheduler läuft. Es ist jedoch manchmal fehleranfällig und ich würde gerne wissen, ob es einen Fehler verursacht hat. Der Windows Scheduler zeigt jedoch immer den Status Erfolgreich an. Wie kann ich den Windows-Scheduler den Fehler anzeigen lassen oder mich benachrichtigen, wenn mein .py-Skript einen Fehler ausgibt?Throw Fehler auf Taskplaner, wenn Python-Skript Fehler

Antwort

1

Ich glaube nicht, dass Sie die Informationen im Windows-Scheduler anzeigen können, da es ShellExecuteEx() aufruft, um Ihr Programm auszuführen, und das Erfolg meldet, unabhängig davon, welchen Rückgabecode Ihr Python-Programm ausgibt. Das liegt daran, dass der Scheduler den Python-Interpreter erfolgreich ausgeführt hat.

Lassen Sie Ihr Programm den Fehler in das Windows-Ereignisprotokoll schreiben und suchen Sie dort nach dem Fehler. Sie können sich etwas einfallen lassen und das Ereignisprotokoll einrichten, um Sie zu benachrichtigen.

+0

'ShellExecuteEx' kann Prozess-Handle zurückgeben und auf den Exit-Code warten, aber das ist nicht das Problem, da der Task-Scheduler' LogonUserExExW' oder 'LsaLogonUser' (S4U) kombiniert mit' CreateProcessAsUser' aufruft. – eryksun

+0

Das OP sagt nicht, aber ich denke, dass dieses Problem für eine ältere Version des Task-Schedulers ist. In Windows 10 behält es den Prozess und zeigt den Prozessbeendigungscode an. IIRC, in Windows 7 wird nur gemeldet, ob die Aufgabe erfolgreich gestartet wurde oder nicht. – eryksun

+0

@eryksun Ich verwende Windows 10, es zeigt nicht den Prozess-Exit-Code für mich. Ich habe es mit einem einfachen Python-Skript ausprobiert, das print a enthält. Es wirft einen NameError, aber wenn ich es mit dem Scheduler ausführe, sagt es mir, dass die Aufgabe erfolgreich ausgeführt wurde. Ich verstehe, dass der Aufgabenplaner nichts damit zu tun hat zu überprüfen, ob das Skript erfolgreich ausgeführt wurde oder nicht. Es stört nur, ob es lief oder nicht. Aber es muss eine Möglichkeit geben, dass der Scheduler mir das oder zumindest meinen Python-Code sagt, um mir das zu sagen. – glitterati

Verwandte Themen