python / python/mypy

Add rule to detect potential bug caused by unheld references to asyncio.create_task

Aperta
#14,710 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

feature topic-async
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Feature

Hi there,

I wanted to suggest adding a rule to MyPy to help detect a potential bug that can occur when using asyncio.create_task. If a developer doesn't hold a reference to the task object returned by create_task, the task may disappear without warning when Python runs garbage collection. This can lead to unpredictable failures in the code, which can be extremely difficult to debug.

References:
https://textual.textualize.io/blog/2023/02/11/the-heisenbug-lurking-in-your-async-code/
https://news.ycombinator.com/item?id=34754276

Pitch

I think adding a rule to MyPy that flags code which creates an asyncio task but doesn't hold a reference to it would be very helpful in preventing this bug from occurring. It would alert developers to the fact that they need to make sure they're holding a reference to the task object if they want to avoid this problem.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia esaminando la gestione esistente di asyncio.create_task da parte di mypy e i report collegati che descrivono task non mantenuti. Definisci quali pattern di riferimenti non mantenuti la regola proposta dovrebbe segnalare, come dovrebbero apparire le diagnosi e quali casi di test dimostrano che la regola è completa.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
tooling
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.