Aiogram остановка бота на момент парсинга. Multiprocessing. Async
Мне нужно с высокой скорость парсить сайт. Для этого я использовал multiprocessing и aiohttp. При запуске парсинга, бот стопорится. Полагаю, проблема где-то в этом участке кода, помогите разобраться. p.map блокирует основной поток, есть ли способ этого избежать?
async def get_json(CURL):
# парсинг через aiohttp
def middleware(curl):
asyncio.run(get_json(curl)) # запуск самого асинхронного парсинга
# запускаемая функция
async def start_pars():
CURL = [1, 2, 3, 4, ...]
with multiprocessing.Pool(multiprocessing.cpu_count()) as p:
p.map(middleware, CURL) # запуск 4-х потоков
Ещё постоянно выскакивает, как я прочёл, некритичная ошибка:
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Ответы (1 шт):
Автор решения: VlasssaDassa
→ Ссылка
p.map блокирует поток, в котором он был запущен. Поэтому я решил проблему путём создания потока, в котором запустил p.map
thread = Thread(target=(asyncio.run), args=(start_pars(), ))
thread.start()