Нужна помощь с синхронностью работы программы
Есть вот такой обработчик
async def cmena(messege: Message):
db = Database(os.getenv("DATABASE_NAME"))
user = db.select_user_id(messege.from_user.id)
await bot.send_message("-1001974191481", f"{user[1]}\n"
f"что-то")
await messege.answer(done(user[1]))
и исполняемый код
def done(name):
gecko_driver_path = (r"C:\report\geckodriver.exe")
firefox_binary_path = r'C:\Program Files\Mozilla Firefox\firefox.exe'
firefox_options = Options()
firefox_options.binary_location = firefox_binary_path
firefox_service = FirefoxService(executable_path=gecko_driver_path)
driver = webdriver.Firefox(service=firefox_service, options=firefox_options)
driver.get("https://сайт.com/")
element_xpath = "/html/body/div/div/div/main/div/div/div/div/div/div/form/div[1]/div/div/div/div/div/div/div[1]/div[1]"#нажатие телефон
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath)))
element.click()
keyboard.write('1221564564')
time.sleep(1.5)
element_xpath = "/html/body/div/div/div/main/div/div/div/div/div/div/form/div[2]/button/span"
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath)))#нажатие войти
element.click()
element_xpath = "/html/body/div/div/div[1]/div[3]/nav/div[1]/div/a[2]/div[2]/div/span"
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath))) # включяем заявки 36
element.click()
element_xpath = "/html/body/div/div/div[1]/div[3]/nav/div[1]/div/a[1]/div[2]/div/span"
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath)))
element.click()
element_xpath = "/html/body/div/div/div/div[3]/main/div/div/div/div/div[1]/div[2]/div/button/span/i"
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath)))#нажатие отклики
element.click()
time.sleep(3.5)
try:
for i in range(4):
element_xpath = f"/html/body/div/div/div/div[3]/main/div/div/div/div/div[4]/div[{i+1}]/div[2]/div[2]/div[4]/button/span/i"
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath))) #раскрываем
element.click()
try:
for a in range(3):
element_xpath = f"/html/body/div/div/div/div[3]/main/div/div/div/div/div[4]/div[{i+1}]/div[2]/div[{a+3}]/div[2]/div[1]/a"
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath)))#читаем
element_text = element.text
print(element_text)
if(element_text == name):
element_xpath = f"/html/body/div/div/div/div[3]/main/div/div/div/div/div[4]/div[{i+1}]/div[2]/div[{a+3}]/div[2]/div[5]/button/span"
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, element_xpath))) # подтверждаем если верно
element.click()
element_xpath = f"/html/body/div/div/div[3]/div/div/div[3]/div/button[1]/span/span"
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, element_xpath))) # подтверждаем если верно
element.click()
driver.quit()
print("Подтверди что то")
return("Подтверди что то")
except:
print("В боке нет фамилии")
except:
driver.quit()
print("Возникла ошибка напишите в группу")
return("Возникла ошибка напишите в группу")
driver.quit()
print("что то не обнаружена")
return("что то не обнаружена")
Этот код откликается на команду с бота и подтверждать в системе, но есть проблема если сразу несколько человек напишут ему то код будет работать не так ка надо.Нужна помощь с тем чтобы это могло работать желательно синхронно, работало правильно если будут несколько человек одновременно.Ну или чтобы это вообще работало правильно к примеру по порядку он им отвечал(а то если сейчас несколько человек ждут отклика то бот начинает обрабатывать обоих и происходит ошибка)ну типа есть ответ бот стопорится и обрабатывает по 1 человеку
Ответы (1 шт):
Спасибо всем за помощь, я решил свою проблему с помощью библиотеки queue и сделал очередь заявок