Задать вопрос
@iddimon3

Selenium асинхроннизация python?

Подскажите, я хочу запустить одновременно aiogram, aiohttp и selenium.
Набросал быстро код и сомневаюсь, что selenium будет работать асинхронно, подскажите как правильнее будет сделать?

П.с: Только начинаю изучать асинхроннизацию.

import asyncio, os
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiohttp import ClientSession, ClientResponseError
from selenium import webdriver
ua = UserAgent()

bot = Bot(token='TOKEN')
dp = Dispatcher(bot)

async def req(r):
    await r.post('url')
    await r.post('url2')
    await r.post('url3')

async def web(r, z, phone):
    url = 'https://stockmann.ru'
    headers = ua.chrome
    option = webdriver.ChromeOptions()
    # option.add_argument("--headless")
    # option.add_argument('--no-sandbox')
    option.add_argument("--disable-blink-features=AutomationControlled")
    option.add_argument(f"user-agent={headers}")
    browser = webdriver.Chrome(options=option)
    browser.get(url=url)
    sleep(5)

async def start():
    await asyncio.ensure_future(req(session))  
    await asyncio.ensure_future(web())  

@dp.message_handler()
async def echo_message(msg: types.Message):
    sender = msg.from_user.id
    mess = msg.text.lower()

    if mess == '/start':
        await bot.send_message(sender, 'Привет.')
if __name__ == '__main__':
        executor.start_polling(dp)
        await asyncio.ensure_future(start())
  • Вопрос задан
  • 2501 просмотр
Подписаться 1 Простой 11 комментариев
Решения вопроса 1
@alex1478
Пока будет работать вся функция web, больше ничего работать не будет. Причём тут даже sleep не асинхронный. (В асинхронных используется asyncio.sleep()). Можно вынести работу с Selenium в отдельный поток.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы