2016-04-13 1 views
0

J'ai un script Python qui est conçu pour fonctionner "pour toujours", qui dans ce cas est jusqu'au prochain redémarrage planifié tous les soirs à minuit et quart. Ce qu'il fait, c'est de vérifier l'heure, puis attendez l'heure complète suivante. Chaque heure, il analyse certaines données d'une page Web, les stocke dans une base de données et envoie un e-mail à un partenaire externe.Le planificateur de tâches Windows termine le script python, opcode 2

Il démarre au démarrage du système à l'aide de Windows Task Scheduler.

Il fonctionne sans problème depuis quelques mois, jusqu'à minuit dimanche dernier. L'ordinateur a redémarré comme d'habitude à 0:25. Après cela, le journal montre que le script est démarré, puis se termine à peu près immédiatement avec l'opcode de retour 2. Absolument rien de ce que je peux penser à changé pour provoquer cela, sauf peut-être une mise à jour Windows de quelque sorte.

Des idées qui pourraient causer ce problème?

C'est un pseudo-code, toutes les distractions supprimées, de ce que le script verra dans la première manche:

scriptRunning = True 
timeoutDelay = -1 

def getTimeoutDelay(lastFetchTime): 
    # calculate and return timeout delay in seconds 
    delay = (60 - int(lastFetchTime.strftime("%M"))) * 60 - int(lastFetchTime.strftime("%S")) 
    return delay 
# end def 


while scriptRunning: 
    if timeoutDelay > -1: 
     #Do the magic 
     pass 

    lastFetchTime = datetime.now() 
    timeoutDelay = getTimeoutDelay(lastFetchTime) 

#endwhile scriptRunning 

Le script semble fonctionner comme prévu si je commence à partir de la ligne de commande manuellement.

+0

Veuillez afficher la définition XML à partir de 'schtasks/query/tn YOUR_TASK_NAME/xml'. – eryksun

Répondre

0

Vous pouvez mettre le fichier dans votre dossier Startup, situé à

%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 

C'est là où il est habituellement. Vous pouvez également le trouver dans Windows > All Programs > Startup

Vous pouvez également utiliser une commande cmd pour créer une tâche à faire ce que vous voulez spécifiquement, par exemple, vous pouvez exécuter ceci dans une invite cmd dans le dossier de votre script est en

schtasks /create /TN "<name of task>" /SC ONLOGON /TR "%cd%\script.py" /Delay 0001:00 
+0

Ceci est un système sans surveillance. Le script doit démarrer au démarrage du système, avant la connexion. Le planificateur peut le faire facilement. Comme je l'ai dit, cela fonctionne parfaitement depuis plusieurs mois jusqu'à ce week-end. –

+0

D'accord, vous pouvez essayer le drapeau 'ONSTART' au lieu de' ONLOGON' –

+0

Merci pour le conseil. Je vais essayer quand je serai de retour sur place demain. –