繁体   English   中英

请求模块在 Python 中乘以 api 调用

[英]Requests module is multiplying api calls in Python

我正在使用 Requests python 模块执行 RESTFUL POST API 调用来创建新项目。

问题:项目被复制。 有时会创建每个项目中的 3 个。 最终 api 中没有对现有数据进行检查以防止重复。

目标:我想发送数据以在名为 Netbox 的第三方应用程序中创建一个新项目,该应用程序由 Django 制成。

我做了什么?:

  • 我曾尝试编写代码来检查现有项目,但它仍然会重复。
  • 我尝试设置一个计时器以将代码的执行暂停 10 秒,直到请求完成。

流程如下所示:

Python Backend (Flask)         ---> Python Backend (Flask)           --> Netbox (Django)

Data Origin sent via Requests  ---> Data Netbox Calls (Via PyNetBox) --> Final DataStore

这两个后端托管在 Cloud Foundry 中,而 Netbox 在 Prem 服务器上的 Linux 上运行。

我有一个像下面这样的字典,代表我需要在 Netbox 中创建的每个项目。

Ex. payload = {'site':'1', 'device':'switch01'}

我通过循环将每条数据发送到我的中间件后端,以通过 pynetbox 对 netbox 进行最终的 api 调用。 我无法直接点击netbox。

for payload in payloads:
     URL = f'{MIDDLEWARE_URL}/netbox/create_item'
     print(f'URL is: {URL} | Payload is {payload}')

     headers = { 'content-type': 'application/json', 'cache-control': "no-cache"}
     proxies={'http' : None, 'https': None}

     r = requests.post(URL, data=json.dumps(payload), headers=headers, verify=False, proxies=proxies)

对于为什么会发生这种情况以及改进我的基线代码逻辑的任何最佳实践,我将不胜感激。

一切顺利,法拉兹

所以我经过更多研究后发现了它,结果证明 flask 正在创建两个进程,因此每次运行我的函数两次。

这是由于调试是真的,所以使用了这个:

app.run(debug=True, use_reloader=False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM