【发布时间】:2021-07-27 10:18:06
【问题描述】:
我想将 azure 数据工厂管道 webhook 活动中的参数传递到我的 azure 自动化 python Runbook。 我该怎么做?
【问题讨论】:
-
你介意在数据工厂中使用网络活动而不是网络钩子吗?
标签: python azure-data-factory azure-automation azure-runbook
我想将 azure 数据工厂管道 webhook 活动中的参数传递到我的 azure 自动化 python Runbook。 我该怎么做?
【问题讨论】:
标签: python azure-data-factory azure-automation azure-runbook
针对这个问题,我在自己这边测试了一下,发现很难通过数据工厂管道中的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 数据。
【讨论】: