全部文档
文档中心工作流使用手册节点组件与平台服务PY脚本

PY脚本

PY脚本节点支持在当前工作流中调用执行Python元素,您可以将工作流中产生的数据传递到python中进行处理然后再将处理结果返回到工作流中。

重要提示:若您需要用定时开始节点,在工作流中定时调用PY脚本,且PY脚本调用了先胜云其他组件的服务,一些服务是需要鉴权的,在定时调用时,很可能因为cookie/token失效而导致鉴权失败、执行失败(报错UNAUTHORIZED),若需要PY脚本能被成功执行,可以在PY脚本中添加绕过鉴权的代码,参考代码如下:

Copy
from deepfos.options import OPTION
from deepfos.lib.eureka import Eureka
OPTION.server.app = Eureka.sync_get_url('APP-SERVER')
OPTION.server.space = Eureka.sync_get_url('SPACE-SERVER')
OPTION.server.system = Eureka.sync_get_url('SYSTEM-SERVER')
OPTION.general.use_eureka = True

即当前节点执行的Python脚本,可以选择当前先胜云平台中的Python组件。



所需参数即传递给python的入参,支持您通过表达式将变量值/计算得到的数据传递给python,表达式支持的变量包括:当前节点(acp$)全局变量(wfv$)启动参数(wfi$)工作流实例(wfp$)工作流(wf$)



对应了python的的自定义参数:



当调用方式选择【同步】时,可获取python中配置的输出结果,等待python返回输出结果之后,才会继续向下执行,PY脚本报错则不会继续向下执行。

但是同步调用方式对PY脚本的运行时长有强制要求:不可超过5分钟

  • 工作流会在此处等待python返回输出结果,默认超时时间是5分钟,超时会返回节点错误,但已经在跑的py的作业不会被中断

  • 此默认超时时间是工作流引擎的全局默认时间,无法通过前端界面修改,也无法按节点来定义各自不同的超时时间

  • 因此对于执行时间【超过3分钟】的python,不建议使用【同步】方式执行,建议使用【异步+等待消息】的编排来实现,详见最佳实践章节的PY脚本部分:概述 — 最佳实践 | DeepFOS Docs

当调用方式选择【异步】时,只要成功调起python服务,工作流就会继续向下执行,不会等待python返回输出结果,即使PY脚本运行失败,也不影响工作流继续向后流转。

  • python执行时间【超过3分钟】,或者,不关心python执行成功与否的场景下,推荐使用异步执行

  • 如果python执行时间【超过3分钟】,但又需要将python的结果返回到工作流中,或者需要等待此脚本完成才能执行下一个节点,可以使用【异步+等待消息】来编排,通过消息参数传递需要的参数,详见最佳实践章节的PY脚本部:概述 — 最佳实践 | DeepFOS Docs

同步执行可返回Python中约定的返回参数,异步执行只要成功调起python服务就会向下流转,不会等py脚本返回的结果,所以没有输出。

您需要先在python元素中启用指定输出结果配置,输出结构为自定义输出结构,才能在该节点使用python中返回的信息:



输出结果会作为当前python节点的局部变量,如果需要在后续节点使用,则需要在数据映射中映射到全局变量中:





回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send