微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将输入参数从 adf webhook 活动传递给 azure python3 runbook

如何解决如何将输入参数从 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"
}

如果我像下面的截图一样在邮递员中测试它(请求正文中没有换行符),它工作正常:

enter image description here

但是如果请求正文中有换行符(如下图),则在 python runbook 中执行 \r\n 时总是失败。不幸的是,我们似乎无法删除 python runbook 中的换行符(我测试了很多方法,例如 replace("\r\n","")xxx.rstrip(),它们都不起作用) enter image description here

如果我们只需要在邮递员中请求,我们可以设置不带换行符的请求体。但是如果我们在数据工厂的 webhook 活动中请求它,即使我只是将请求正文设置在一行中,请求正文似乎也会被格式化为换行符: enter image description here

所以我建议您使用“Web”活动而不是“Webhook”活动,因为在“Web”活动中,我们可以输入字符串而不是 json 数据作为请求正文。如果在“Webhook”活动中,它不允许我们在请求正文中输入无效的 json 数据。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。