Вступить в клуб →
средняявопросPython и асинхронность

Вызов asyncio.run внутри обработчика FastAPI падает с RuntimeError

def get_rate_sync(currency):
    return asyncio.run(fetch_rate(currency))   # fetch_rate — async-функция

@app.get("/price")
async def price(currency: str):
    rate = get_rate_sync(currency)
    return {"price": 100 * rate}

Ручка падает: RuntimeError: asyncio.run() cannot be called from a running event loop. Как правильно?

  • Внутри async-функции просто сделать await fetch_rate(currency)
  • Создать новый event loop через asyncio.new_event_loop() и запустить в нём
  • Обернуть asyncio.run в try/except и повторить вызов
  • Сделать ручку обычной def — тогда asyncio.run заработает внутри FastAPI

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела