Python 3.7+Асинхронное программированиефункция
asyncio.run()
event loop
Запускает корутину верхнего уровня в новом event loop. Главная точка входа для async-программ (Python 3.7+).
Синтаксис
asyncio.run(coro)
Вызвать его изнутри уже работающего цикла нельзя: в Jupyter или внутри другой корутины получите RuntimeError про asyncio.run() cannot be called from a running event loop. Каждый вызов создаёт новый loop и в конце закрывает его, отменяя недоделанные задачи, поэтому привязанные к циклу объекты (Queue, Lock, открытые соединения) нельзя переиспользовать между двумя вызовами. Практическое правило: ровно один вызов на всю программу, в самой верхней точке.
Примеры
import asyncio
async def main():
return 42
result = asyncio.run(main())
result # → 42
import asyncio
async def hello():
print('start')
await asyncio.sleep(0)
print('end')
asyncio.run(hello()) # → start / end
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности