MagicStack / MagicStack/uvloop
TCP Transport RuntimeError with Python 3.13 + uvloop
Personne n'a encore pris cette issue.
- Langage dominant
- Cython
- Étoiles
- 11.9k
- Forks
- 616
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
TCP Transport RuntimeError with Python 3.13 + uvloop
Summary
uvloop is causing RuntimeError: unable to perform operation on <TCPTransport closed=True> errors when used with Python 3.13. Switching to --loop asyncio fixes the issue.
Environment
- Python: 3.13.3
- uvloop: (latest)
- Starlette: 0.46.2
- FastAPI: 0.115.14
Reproduction
- Use Python 3.13
- Run uvicorn with
--loop uvloop - Make concurrent HTTP requests (e.g., browser loading static files)
- Client disconnects/refreshes during response
Workaround
Use --loop asyncio instead of uvloop.
Expected
uvloop should handle closed connections gracefully like asyncio does.
Edit
I had a stray uvicorn process that had wracked up 9hrs of CPU time, this could potentially be the issue?
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’échec avec Python 3.13.3, uvloop et uvicorn en utilisant des requêtes concurrentes et une déconnexion ou un actualisation du client ; comparez-le avec --loop asyncio. Suivez le TCPTransport closed=True RuntimeError et rendez compte du processus uvicorn résiduel signalé. Le travail est terminé lorsque la configuration de uvloop gère les connexions fermées sans cette erreur lors de la reproduction.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- networking
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100