Как обработать на python одновременно поступившие webhook?
люди добрые! Я новичок в кодинге. Программа принимает данные json и заполняет форму на сайте.
Например:
{'citizenship': 'englishman', 'name': 'Sherlock', 'surname': 'Holmes', 'key': 'person'} и
{'citizenship': 'russian', 'name': 'Иван', 'surname': 'Иванов', 'key': 'person'}
В зависимости от 'citizenship', выбирает вкладку, заполняет и отправляет.
Иногда данные поступают одновременно. Тогда заполняет только одну форму. Либо на первую накладывается данные второго.
Код:
from flask import Flask, request, abort
from selenium import webdriver
app = Flask(__name__)
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(
executable_path=r"C:\Users\chromedriver.exe", options=options)
driver.maximize_window()
def fill_form(data):
name = driver.find_element_by_id('input_name')
name.clear()
name.send_keys(data['name'])
surname = driver.find_element_by_id('input_surname')
surname.clear()
surname.send_keys(data['surname'])
driver.find_element_by_id('button').click()
@app.route('/', methods=['POST'])
def webhook():
if request.method == 'POST':
data = request.get_json()
if data['key'] == 'person':
fill_form(data)
return '', 200
else:
abort(403)
else:
abort(400)
if __name__ == "__main__":
app.run()
Вот так ругается:
WARNING:urllib3.connectionpool:Connection pool is full, discarding connection: 127.0.0.1
Пробовал поставить задержку и менял значение. Не помогло.
```python
from time import sleep
def fill_form(data):
name = driver.find_element_by_id('input_name')
name.clear()
name.send_keys(data['name'])
surname = driver.find_element_by_id('input_surname')
surname.clear()
surname.send_keys(data['surname'])
driver.find_element_by_id('button').click()
sleep(0.5)
Ответы (1 шт):
Автор решения: ganz
→ Ссылка
использовать модуль queue для хранения данных
import queue
q=queue.Queue(2) #размер очереди
q.empty()
#True
q.full()
#False
q.put('мои данные')
q.get()
#'мои дынные'