Problèmes d'exécution de script python par le planificateur de tâches de windows qui ne pscp
Ne sais pas si quelqu'un a rencontrer ce genre, mais je vais prendre les suggestions de dépannage et/ou de méthodes alternatives.
J'ai un Windows 2008 serveur sur lequel je suis en cours d'exécution de plusieurs tâches planifiées. L'une de ces tâches est un script python qui utilise pscp pour se connecter sur une machine linux, vérifie la présence de nouveaux fichiers et si il y a quelque chose de nouveau, de les copier vers un répertoire local sur le lecteur C:. J'ai mis quelques traces dans le script à des points clés et je suis en utilisant logging.basicConfig(level=DEBUG)
.
J'ai construit la commande à l'aide d'une variable, command = 'pscp -pw xxxx name@ip:/c:\local_dir'
puis-je utiliser subprocess.call(command)
pour exécuter la commande.
Maintenant, voici ce qui est curieux. Si je lance le script manuellement à partir de la ligne de commande, il fonctionne très bien. Les nouveaux fichiers sont téléchargées et traitées. Toutefois, si le Planificateur de Tâches exécute le script, pas de nouveaux fichiers sont téléchargés. Le script est en cours d'exécution sous le même utilisateur, mais encore produit des résultats différents.
Selon le journal, les fichiers créés par le script, et sous linux, le script se connecte avec succès dans la boîte linux. Cependant, aucun des fichiers sont téléchargés en dépit de l'existence de nouveaux fichiers. Encore une fois, quand je le lance via la ligne de commande, les fichiers sont téléchargés.
Des idées? des suggestions, des méthodes alternatives?
Grâce.
OriginalL'auteur user1070061 | 2013-11-25
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème lorsque vous essayez d'ouvrir une base de données MS Access sur une machine virtuelle Linux. L'exécution du script à la Windows 7 invite de commande a fonctionné, mais en l'exécutant dans le Planificateur de Tâches n'a pas. Avec le Planificateur de Tâches, il serait de trouver la base de données et vérifier qu'il existait, mais qu'elle ne reviendra pas, les tables à l'intérieur d'elle.
La solution était d'avoir le Planificateur de Tâches exécuter cmd que le Programme/Script avec les arguments /c python C:\path\to\script.py (sous Ajouter des arguments (facultatif)).
Je ne peux pas vous dire pourquoi cela fonctionne, mais il a résolu mon problème.
cela ne fonctionne pas pour moi non plus. chaque chose que j'essaie, il ne fait rien quand j'appuie sur Exécuter. >:(
Comment puis-je empêcher l'ennuyeux "taskeng.exe" fenêtre de popping up à chaque fois que le script est exécuté (mon script s'exécute toutes les 15 minutes)?
OriginalL'auteur Brad Posthumus
Je vais avoir un problème similaire. Dans les essais, j'ai trouvé que n'importe quel type d'appel avec des processus secondaire arrête le script python, lorsqu'il est exécuté dans le planificateur de tâches, mais fonctionne très bien lorsqu'il est exécuté sur la ligne de commande.
Lorsqu'il est exécuté sur la ligne de commande ce sorties:
Lorsque vous exécutez à partir du planificateur de tâches la sortie est:
Afin d'obtenir la sortie à partir du planificateur de tâches-je exécuter le script python à partir d'un fichier de commandes comme suit:
Je lance le script à travers le fichier de commandes à la fois sur la ligne de commande et par l'intermédiaire du planificateur de tâches.
OriginalL'auteur Steve
Vous pouvez utiliser le Planificateur de Tâches de windows, mais assurez-vous que l'option" champ "Démarrer Dans" est rempli.
Dans le Planificateur de Tâches d'application, ajouter une action qui spécifie votre fichier python pour exécuter "doSomeWork" et de remplir le Départ (en option) entrée avec le répertoire qui contient le fichier.. Donc par exemple si vous avez un fichier python:
Vous entrez:
Merci. C'est ce qui fonctionne le mieux pour moi, alors j'ai décidé de poster
C'était la seule chose qui a fonctionné pour moi!
OriginalL'auteur Erkin Djindjiev
Sa réponse est juste. Sous-processus des besoins de la coquille contexte de travail et le gestionnaire de tâche peut lancer python sans que. Une autre façon de le faire est de faire un fichier batch qui est lancé par le planificateur de tâches que les appels python c:\path\to\script.py etc. La seule différence est que si vous exécutez un script qui est un appel à l'os.getcwd (), vous obtiendrez toujours la racine du script, mais vous obtenez quelque chose d'autre lorsque vous faites l'appel à cmd dans le planificateur de tâches.
OriginalL'auteur citizen2191629
Dernière édition démarrage
Après des expériences... Si vous y mettre du chemin d'accès complet au programme python, il fonctionne sans privilèges les plus élevés (en tant qu'administrateur). Signification des paramètres de la tâche comme ceci:
Je n'ai aucune idée pourquoi, mais il fonctionne même si le script utilise des sous-processus et les threads multiples.
Dernière édition de fin d'
Ce que j'ai fait est que j'ai changé les paramètres de la tâche: vérifié
Run with highest privileges
. Et la tâche a commencé à fonctionner à la perfection lors de l'exécution depython [script path]
.Mais gardez à l'esprit, que le titre contient "l'Administrateur:" au début... toujours...
P. S. Merci les gars pour souligner que les sous-processus est un problème. Il m'a fait penser aux paramètres de la tâche.
J'ai eu le même problème quand un script est en cours d'exécution à partir du Planificateur de Tâches Windows, et un autre n'est pas.
Exécute cmd avec
python [script path]
n'a pas fonctionné pour moi sur Windows Embedded 8.1 x64. Je ne sais pas pourquoi. Probablement en raison de la nécessité d'avoir des espaces dans le chemin d'accès et le problème avec les citations.Espère que ma réponse vous aide à quelqu'un. 😉
Tu veux dire comme ça?
OriginalL'auteur Constantine Ketskalo
Créer un fichier de commandes ajouter votre script python dans votre fichier de commandes, puis calendrier de fichier de commandes .il va travailler .
Exemple : supposons que votre script python est dans le dossier c:\abhishek\script\merun.py
vous devez d'abord aller dans le répertoire par la commande cd .si votre fichier de commandes serait comme :
cd c:\abhishek\script
python merun.py
fonctionner pour moi .
OriginalL'auteur abhishek