web-dev-qa-db-fra.com

Schedule Python - Windows 7

J'ai un script python que j'aimerais exécuter à intervalles réguliers. J'utilise Windows 7. Quelle est la meilleure façon d'accomplir cela? La manière la plus simple?

46
Btibert3

Vous pouvez le faire dans la ligne de commande comme suit:

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

Cela créera une tâche horaire appelée "PythonTask". Vous pouvez remplacer HOURLY par DAILY, WEEKLY etc. PATH_TO_PYTHON_EXE sera quelque chose comme: C:\python25\python.exe. Découvrez plus d'exemples en écrivant ceci dans la ligne de commande:

schtasks /?

Sinon, vous pouvez ouvrir le Planificateur de tâches et le faire via l'interface graphique. J'espère que cela t'aides.

59
Glen Robertson

Vous pouvez utiliser l'interface graphique du panneau de contrôle (appelée "tâches planifiées") pour ajouter une tâche, la plupart devraient être explicites, mais il y a deux choses à surveiller:

  • Assurez-vous de remplir C:\python27\python.exe Comme chemin d'accès au programme et le chemin d'accès à votre script comme argument.

  • Si vous choisissez Run whether user is logged on or not, J'obtiens une erreur: The directory name is invalid (0x87010B). Choisir Run only when user is logged on "Résout" ce problème.

Cela m'a pris beaucoup de temps pour comprendre ...

52
Martin Tournoij

Un moyen simple de le faire est d'avoir un script en cours d'exécution avec une boucle de retard. Par exemple:

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

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

Ensuite, laissez ce script en cours d'exécution, et il fera son travail une fois par heure.

Notez que ce n'est qu'une approche du problème; l'utilisation d'un service fourni par le système d'exploitation comme le Planificateur de tâches est une autre façon qui évite d'avoir à laisser votre script s'exécuter tout le temps.

11
Greg Hewgill