You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
AttributeError: type object 'async_generator_asend' has no attribute 'f_lineno' #699
Getting AttributeError: type object 'async_generator_asend' has no attribute 'f_lineno' exceptions when handling multipart form uploads in FastAPI with uvloop.
Environment
Python version: 3.12.11
uvloop version: 0.21.0
OS: Linux (Docker)
Framework: FastAPI with uvicorn
Steps to Reproduce
Use FastAPI with uvloop enabled
Upload file via multipart form data
Exception appears in logs during async generator cleanup
Full Traceback
Exception ignored in: <async_generator object Request.stream at 0x7f6f1be8f920>
Traceback (most recent call last):
File "uvloop/loop.pyx", line 3187, in uvloop.loop.Loop._asyncgen_finalizer_hook
File "uvloop/loop.pyx", line 1289, in uvloop.loop.Loop.call_soon_threadsafe
File "uvloop/cbhandles.pyx", line 329, in uvloop.loop.new_Handle
File "uvloop/cbhandles.pyx", line 15, in uvloop.loop.Handle._set_loop
File "uvloop/cbhandles.pyx", line 427, in uvloop.loop.extract_stack
File "/usr/local/lib/python3.12/traceback.py", line 395, in extract
return klass._extract_from_extended_frame_gen(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/traceback.py", line 418, in _extract_from_extended_frame_gen
for f, (lineno, end_lineno, colno, end_colno) in frame_gen:
^^^^^^^^^
File "/usr/local/lib/python3.12/traceback.py", line 392, in extended_frame_gen
for f, lineno in frame_gen:
^^^^^^^^^
File "/usr/local/lib/python3.12/traceback.py", line 336, in walk_stack
yield f, f.f_lineno
^^^^^^^^^^
AttributeError: type object 'async_generator_asend' has no attribute 'f_lineno'
# main.py
import uvicorn
from fastapi import FastAPI, Request
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.responses import JSONResponse
app = FastAPI()
# Define three simple middlewares. The third one will try to read the request body.
class FirstMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
print("Entering First Middleware")
response = await call_next(request)
print("Exiting First Middleware")
return response
class SecondMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
print("Entering Second Middleware")
response = await call_next(request)
print("Exiting Second Middleware")
return response
class ThirdMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
response = await call_next(request)
return response
# Add the three middlewares to the application
app.add_middleware(FirstMiddleware)
app.add_middleware(SecondMiddleware)
app.add_middleware(ThirdMiddleware) # <-- If you comment out this line, or any of the others, the error disappears.
@app.post("/test")
async def test_endpoint(request: Request):
# The endpoint can also try to access the body, which still works
# because BaseHTTPMiddleware caches it.
body = await request.json()
return JSONResponse({"message": "success", "body_received": body})
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8090)
.env
PYTHONASYNCIODEBUG=1
Error
Exception ignored in: <async_generator object Request.stream at 0x106c97680>
Traceback (most recent call last):
File "uvloop/loop.pyx", line 3187, in uvloop.loop.Loop._asyncgen_finalizer_hook
File "uvloop/loop.pyx", line 1289, in uvloop.loop.Loop.call_soon_threadsafe
File "uvloop/cbhandles.pyx", line 329, in uvloop.loop.new_Handle
File "uvloop/cbhandles.pyx", line 15, in uvloop.loop.Handle._set_loop
File "uvloop/cbhandles.pyx", line 427, in uvloop.loop.extract_stack
File "/Users/admin/miniconda3/envs/py312/lib/python3.12/traceback.py", line 395, in extract
return klass._extract_from_extended_frame_gen(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/admin/miniconda3/envs/py312/lib/python3.12/traceback.py", line 418, in _extract_from_extended_frame_gen
for f, (lineno, end_lineno, colno, end_colno) in frame_gen:
^^^^^^^^^
File "/Users/admin/miniconda3/envs/py312/lib/python3.12/traceback.py", line 392, in extended_frame_gen
for f, lineno in frame_gen:
^^^^^^^^^
File "/Users/admin/miniconda3/envs/py312/lib/python3.12/traceback.py", line 336, in walk_stack
yield f, f.f_lineno
^^^^^^^^^^
AttributeError: type object 'StopIteration' has no attribute 'f_lineno'
Activity
gloryfromca commentedon Nov 4, 2025
same question.
Error
ci: make the Redis integration tests self-contained and fix the CI en…