Есть событие появления нового сообщения, из него надо вызвать скриншотер на pyppeteer в цикле
Выглядит так:
....
async def screenshot(stock, loop, date_msg):
await launch(headless=True, defaultViewport=None, args=['--no-sandbox'])
.....
....
@client.on_message()
def msg_handler(client, message):
.......
for row in result:
loop = asyncio.get_event_loop()
loop.run_until_complete(screenshot(stock.upper(), loop, date_msg))
screens.append(InputMediaPhoto(os.path.join(BASEDIR, stock.upper()+".png")))
В таком виде получаю такую ошибку:
RuntimeError: There is no current event loop in thread 'Handler_0'
Т.к. пытаюсь запускать не из главного потока
loop1 = asyncio.new_event_loop()
asyncio.set_event_loop(loop1)
loop = asyncio.get_event_loop()
loop.run_until_complete(screenshot(stock.upper(), loop, date_msg))
Вот в таком получаю следующее:
signal only works in main thread
Это уже от pyppeteer
Но если отключаю сигналы:
await launch(headless=True, defaultViewport=None, args=['--no-sandbox'], handleSIGINT=False, handleSIGTERM=False, handleSIGHUP=False)
То loop.run_until_complete просто не завершается и висит.
Что с этим делать?