【发布时间】:2021-03-24 11:12:02
【问题描述】:
我想将我的 Nifi-ETL 管道(主要是 PUTSQL 处理器)从我的开发实例转移到 Apache Nifi 的生产实例,最好使用 Python 以实现可重用性。
我想我会尝试复制粘贴它们。
- 在 /nifi-api/processors/{id} 上使用 GET 请求从 DEV 获取处理器
- PUT 处理器到 PRD Nifi-instance,在 /nifi-api/processors/{id} 上有 PUT 请求
代码:
# GET processor and parse to JSON
response = requests.get(nifi_url_dev + 'processors/' + proc_id
, headers=header)
processor = json.loads(response.content)
# PUT processor
processor['revision']['version'] = 0 # reset version
payload = json.dumps(processor).encode('utf8')
response = requests.put(nifi_url_prd + 'processors/' + proc_id
, data=payload
, headers=header)
这在 PUT 上失败,409 HTTP Conflict Error。我猜这是因为我试图将资源放在期望资源已存在于该位置的 URI 上。
documentation 在处理器 API 旁边列出了“创建处理器、设置属性、调度”,但是在查看它时,没有用于创建的专用 API - 我决定使用 PUT,因为它说“更新处理器”,这是我在那里看到的最接近从头开始创建新处理器的东西。
您对如何使用 Python 创建处理器有任何想法吗?通过复制现有的或创建全新的?
【问题讨论】:
-
如果您要使用 API 和 Python,我建议您使用 Nipyapi github.com/Chaffelson/nipyapi - 但听起来您可能会使用 NiFi Registry stackoverflow.com/questions/66711274/…
-
NiPyApi 的版本是 0.16.2-Alpha 和私人开发的 GitRepo,所以我宁愿不在生产中使用它......
标签: python python-requests apache-nifi