Асинхронный запуск функции
У меня есть функция update_db, которая обновляет базу данных. Функция get_product работает секунд 10. Если у меня будет 100 товаров, то функция update_db будет выполняться очень долго. Как можно запустить функцию get_product сразу ко всем товарам асинхронно?
def update_db():
for product in products:
url = product[6]
title, price, availability = get_product(url, mode=True)
cur.execute('UPDATE products_product SET title = %s, price = %s, availability = %s WHERE url = %s',
(title, price, availability, url))
conn.commit()
get_product
from bs4 import BeautifulSoup
from selenium import webdriver
def get_product(url_website: str, mode: bool = True):
options = webdriver.ChromeOptions()
options.add_argument(f"user-agent=project-user-agent")
options.add_argument("--disable-blink-features=AutomationControlled")
options.headless = mode
driver = webdriver.Chrome(
executable_path="Путь_до_драйвера",
options=options
)
title = ''
price = 0
availability = True
try:
driver.get(url=url_website)
content = driver.page_source
soup = BeautifulSoup(content, 'lxml')
title = soup.find('h1', class_='title').text
price_str = soup.find('span', class_='price__main-value').text
test = soup.find('p', class_='product-sold-out-text')
if test:
availability = False
else:
availability = True
except Exception as ex:
print(f'Неизвестная ошибка: {ex}')
finally:
driver.close()
driver.quit()
return title, price, availability