Модуль запросов умножает вызовы API на Python - PullRequest
1 голос
/ 28 мая 2020

Я использую модуль Requests python для выполнения вызовов API RESTFUL POST для создания нового элемента.

ПРОБЛЕМА: Элементы дублируются. Иногда создается по 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 Foun dry, а Netbox развернут на Linux на Prem Server.

У меня есть словарь, как показано ниже который представляет каждый элемент, который мне нужно создать в Netbox.

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

Я отправляю каждый фрагмент данных в свой бэкэнд промежуточного программного обеспечения через al oop, чтобы сделать последний вызов api в netbox через pynetbox. Я не могу напрямую подключиться к 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)

Я был бы признателен за любую помощь относительно того, почему это происходит, и за любые рекомендации по улучшению моего базового кода логи c.

Всего наилучшего, Фараз

1 Ответ

1 голос
/ 28 мая 2020

Итак, я понял это после некоторых дополнительных исследований, и оказалось, что flask создавал два процесса и, следовательно, запускал мои функции дважды каждый раз. 1003 *

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