2010-04-27 12 views
38

Mam skrypt Pythona, który chciałbym uruchomić w regularnych odstępach czasu. Używam systemu Windows 7. Jaki jest najlepszy sposób na osiągnięcie tego? Najprostszy sposób?Schedule Python Script - Windows 7

+0

zobaczyć: https://blogs.esri.com/esri/arcgis/2013/07/30/scheduling-a-scrip/ –

Odpowiedz

54

Można to zrobić w linii poleceń w następujący sposób:

schtasks /Create /SC HOURLY /TN PythonTask /TR "PATH_TO_PYTHON_EXE PATH_TO_PYTHON_SCRIPT" 

To stworzy zadanie godzinową o nazwie „PythonTask”. Możesz zamienić HOURLY na DAILY, WEEKLY itd. PATH_TO_PYTHON_EXE będzie wyglądać następująco: C: \ python25 \ python.exe. Sprawdź więcej przykładów pisząc to w wierszu poleceń:

schtasks /? 

przeciwnym razie można otworzyć Harmonogram zadań i zrobić to za pośrednictwem GUI. Mam nadzieję, że to pomoże.

+0

"/ system RU" pozwoli ci uruchomić skrypt nawet wtedy, gdy użytkownik nie jest zalogowany, użyteczny dla serwerów itp. – Paolo

7

Prostym sposobem na zrobienie tego jest posiadanie ciągle działającego skryptu z pętlą opóźnienia. Na przykład:

def doit(): 
    print "doing useful things here" 

if __name__ == "__main__": 
    while True: 
     doit() 
     time.sleep(3600) # 3600 seconds = 1 hour 

Następnie zostawić ten skrypt działa i będzie wykonywać swoje zadania raz na godzinę.

Należy pamiętać, że jest to tylko jedno podejście do problemu; korzystanie z usług dostarczanych przez system operacyjny, takich jak Task Scheduler, to inny sposób, który pozwala uniknąć pozostawiania skryptu przez cały czas.

+3

Jaka jest zaleta tego w porównaniu z Task Scheduler? Lub w inny sposób, dlaczego bałagan z TS, wydaje się to czystsze i łatwiejsze. – Danijel

+2

Dzięki takiemu podejściu nie ma gwarancji, że zadanie jest wykonywane co godzinę ... To tylko upewnia się, że pomiędzy zadaniami jest jedna godzina. Może to mieć znaczenie, jeśli twoje zadanie zajmie więcej niż kilka sekund. – user3817518

47

Można używać GUI z panelu sterowania (zwana „zaplanowanych zadań”), aby dodać zadanie, większość z nich powinna być oczywista, ale są dwie rzeczy, na które trzeba uważać:

  • Należy wprowadzić C:\python27\python.exe jako ścieżkę programu, a ścieżkę do skryptu jako argument.

  • Jeśli wybierzesz Run whether user is logged on or not, pojawi się błąd: The directory name is invalid (0x87010B). Wybranie "Run only when user is logged on" rozwiązuje ten problem.

To zajęło mi sporo dowiedzieć się ...

+0

To nie działa dla mnie. Jak widzisz błąd? – endolith

+1

@endolith Minęły lata odkąd opublikowałem tę odpowiedź, i tak naprawdę nie mam maszyny Windows do testowania :-) Z pamięci, myślę, że widzisz to na tym samym ekranie, gdzie ustawiasz zadania gdzieś ... Jeśli nie mogę go znaleźć, to prawdopodobnie dobry temat na kolejne pytanie ;-) (może najlepiej opublikowany na [SuperUser] (https://superuser.com). – Carpetsmoker