I am using FastAPI, and strangely, only on the first API call I get the error "RuntimeError: Cannot enter into task while another task is being executed." I have supplied some sample code that should reproduce this error.
import asyncio
import nest_asyncio
from fastapi import FastAPI
import nest_asyncio
nest_asyncio.apply()
app = FastAPI(title="Test Api")
async def task1():
print("task1 before")
await asyncio.sleep(0.4)
print("task1 after")
async def task2():
print("task2 before")
await asyncio.sleep(0.4)
print("task2 after")
@app.get("/test")
async def test():
async def main():
print("main: start")
task = asyncio.create_task(task1())
asyncio.run(task2())
print("main: end")
await task
asyncio.run(main())
I am using the command uvicorn main:app
to run the API on localhost. Strangely, despite getting this error, the code always seems to execute properly.