如何解决如何将输入参数从 adf webhook 活动传递给 azure python3 runbook
我想将参数从 azure 数据工厂管道 webhook 活动传递到我的 azure 自动化 python 运行手册。 我该怎么做?
解决方法
对于这个问题,我在我身边测试,发现在数据工厂管道中通过webhook活动请求python runbook是很困难的。我在 Runbook 中的 Python 代码如下所示:
#!/usr/bin/env python3
import sys
import re
import json
from urllib import parse
def fixJSON(string):
res = re.sub(r"([^{}:,]+):([^{}:,]+),?",r'"\1":"\2",',string )
res = re.sub('"[ ]*,[ ]*}','"}',res)
# and empty string
res = re.sub("\"(''|\")\"",'""',res)
# property : {...}
res = re.sub(r"([^{}:,]+)(?=:{)",r'"\1"',res )
return res
print("===")
test = str(sys.argv[1])
jsonStr = fixJSON(test)
jsonStr = jsonStr.replace("\"\"","\"")
print(jsonStr)
jsonData = json.loads(jsonStr)
print(jsonData["RequestBody"])
我使用请求正文对其进行测试:
{
"name":"hury"
}
如果我像下面的截图一样在邮递员中测试它(请求正文中没有换行符),它工作正常:
但是如果请求正文中有换行符(如下图),则在 python runbook 中执行 \r\n
时总是失败。不幸的是,我们似乎无法删除 python runbook 中的换行符(我测试了很多方法,例如 replace("\r\n","")
、xxx.rstrip()
,它们都不起作用)
如果我们只需要在邮递员中请求,我们可以设置不带换行符的请求体。但是如果我们在数据工厂的 webhook 活动中请求它,即使我只是将请求正文设置在一行中,请求正文似乎也会被格式化为换行符:
所以我建议您使用“Web”活动而不是“Webhook”活动,因为在“Web”活动中,我们可以输入字符串而不是 json 数据作为请求正文。如果在“Webhook”活动中,它不允许我们在请求正文中输入无效的 json 数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。