大家好,我在尝试通过 UiPath 运行一个 Python 文件时遇到了问题。文件运行正常,但执行到某个特定步骤时,Python 文件就会停止运行并卡住。不过,当我在 UiPath 中停止该流程后,Python 文件却会继续运行,简直像变魔术一样,并最终完成整个流程。但我必须先在 UiPath 中停止该流程。
你们知道为什么会这样吗?
大家好,我在尝试通过 UiPath 运行一个 Python 文件时遇到了问题。文件运行正常,但执行到某个特定步骤时,Python 文件就会停止运行并卡住。不过,当我在 UiPath 中停止该流程后,Python 文件却会继续运行,简直像变魔术一样,并最终完成整个流程。但我必须先在 UiPath 中停止该流程。
你们知道为什么会这样吗?
UiPath Python 会卡住,因为它会启动一个单独的 python.exe 进程,而该进程不会随 UiPath 一起停止。
点击停止时,UiPath 会结束自己的部分,但 Python 会继续在后台运行,直到任务完成。
快速解决方法:运行前在任务管理器中结束残留的 python.exe > 先在 cmd/PyCharm 中单独测试脚本 > 使用 Load Python Script + Invoke Method(而不是直接调用文件)> 在 Python 中添加 print/try-catch,以便发现卡住的位置 > 用 Try Catch + Terminate Workflow 包裹起来。也请更新 UiPath.Python.Activities 包。
UiPath 会卡住,因为它会将 Python 作为独立的 python.exe 进程启动。当脚本阻塞或产生大量输出时,UiPath 会一直等待,但 python.exe 仍在后台运行。按下“停止”后,UiPath 会停止,但 Python 会继续运行并正常结束。
可以通过使用 Load Script + Invoke Method、减少返回的数据量、在 Python 中添加日志、升级 Python 包,以及在重新运行前结束残留的 python.exe 进程来解决。
如果这帮助你解决了问题,请将其标记为解决方案,这样也能帮助其他人。
这是因为 UiPath 正在等待 Python 返回响应,但你的 Python 脚本仍在后台运行,因此 UiPath 认为它「卡住了」。
试试这样:
在脚本顶部添加以下内容。
import sys
sys.stdout = open(sys.devnull, ‘w’)
另外,务必从方法中返回一些内容。
使用以下活动调用:
main最后,长时间运行的进程不要使用 Run Python Script
而是将所有内容封装在一个函数中,并使用 Invoke Python Method 调用它。
你说 UiPath 卡住时,是变成了“未响应”,还是只是一直在运行?
如果只是一直在运行,可能是 Python 还在执行,而且脚本很大。
如果是“未响应”,可能是 UiPath 和 Python 同时运行导致 CPU 占用率过高。
结束 UiPath 进程却没有停止 Python,是因为它们是独立的进程。
祝好