Salut tout le monde, j’ai un problème quand j’essaie d’exécuter un fichier dans UiPath avec un fichier Python. Le fichier s’exécute sans problème, mais à un certain moment, il cesse de s’exécuter et se bloque. Pourtant, quand j’arrête le processus dans UiPath, le fichier Python continue de s’exécuter, comme par magie, et termine le processus. Mais je dois arrêter le processus dans UiPath.
UiPath Python se bloque parce qu’il lance un processus python.exe distinct qui ne s’arrête pas avec UiPath.
Quand tu cliques sur Arrêter, UiPath arrête sa partie, mais Python continue de tourner en arrière-plan jusqu’à la fin.
Solution rapide : tue les processus python.exe qui traînent dans le Gestionnaire des tâches avant l’exécution > teste le script seul dans cmd/PyCharm d’abord > utilise Load Python Script + Invoke Method (pas le fichier directement) > ajoute des print/try-catch en Python pour repérer les blocages > entoure le tout d’un Try Catch + Terminate Workflow. Mets aussi à jour le package UiPath.Python.Activities.
UiPath se bloque parce qu’il lance Python dans un processus python.exe distinct. Lorsque le script se bloque ou produit un grand volume de sortie, UiPath attend indéfiniment, tandis que python.exe continue de s’exécuter en arrière-plan. Lorsque vous appuyez sur Stop, UiPath s’arrête, mais Python continue de tourner et se termine normalement.
Pour résoudre le problème, utilisez Load Script + Invoke Method, réduisez la quantité de données renvoyées, ajoutez des journaux dans Python, mettez à niveau le package Python et arrêtez les processus python.exe restés en arrière-plan avant de relancer.
Si cela vous a aidé à résoudre le problème, veuillez marquer cette réponse comme solution afin qu’elle puisse aussi aider d’autres personnes.
Cela se produit parce qu’UiPath attend que Python renvoie une réponse, mais que ton script Python continue de s’exécuter en arrière-plan, et qu’UiPath pense qu’il est « bloqué ».
Essaie ceci :
Ajoute ceci en haut du script.
import sys
sys.stdout = open(sys.devnull, ‘w’)
Pense aussi à toujours renvoyer quelque chose depuis la méthode.
Appelle-la avec :
Python Scope
Load Script
Invoke Python Method: main
Enfin, N’utilise PAS Run Python Script pour les processus de longue durée
À la place, place tout dans une fonction et appelle-la avec Invoke Python Method.