Как не дожидаться выполнение метода python
как в пайтоне можно поставить метод на выполнение и не ждать пока он завершится, а идти дальше по коду, при этом не создавать новых потоков. У меня вот есть задача, но программа ждёт её выполнения
async def main():
for event in longpoll.listen():
task = asyncio.create_task(newMessage(event))
await task
и сам метод, который должен выполняться асинхронно
async def newMessage(event):
#some logic
Ответы (1 шт):
Убрать await task - таск уже запланирован через create_task - значит выполнится во время ожидания другой асинхронной функции.
for event in longpoll.listen блокирующий похоже, даже если убрать await - таск не выполнится потому как тред заблокирован.
async def main() - не делает код асинхронным. Нужно поменять библиотеку чтоб работать асинхронно. С этой библиотекой используйте треды:
def main():
for event in longpoll.listen():
task = threading.Thread(target=newMessage, args=(event,)).start()
А вот например асинхронная библиотека с асинхронным for: https://github.com/Fahreeve/aiovk#user-long-poll