Как не дожидаться выполнение метода python

как в пайтоне можно поставить метод на выполнение и не ждать пока он завершится, а идти дальше по коду, при этом не создавать новых потоков. У меня вот есть задача, но программа ждёт её выполнения

async def main():
for event in longpoll.listen():
       task = asyncio.create_task(newMessage(event))
       await task

и сам метод, который должен выполняться асинхронно

async def newMessage(event):
#some logic

Ответы (1 шт):

Автор решения: eri

Убрать 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

→ Ссылка