python / python/cpython

Queue shutdown

Offen
#96,471 14 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stdlib topic-multiprocessing type-feature
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Add a shutdown method to queue class (threading queue, multiprocessing, asyncio) which causes all future puts to raise (a queue.QueueShutdown) and all future gets once the queue is empty to also raise, unblocking all waiters. An optional argument immediate=True will skip the requirement for the queue to be empty.

This will enable producers and consumers to use the queue to know when to stop. This is important because both producers and consumers can be blocked waiting on the queue.

Previous discussion:

Linked PRs
  • gh-96474
  • gh-102499
  • gh-104225
  • gh-104228
  • gh-104230
  • gh-104750
  • gh-115265
  • gh-115838
  • gh-116699
  • gh-117621
  • gh-138828

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Überprüfe die verknüpften pull requests und die vorherige Diskussion zur Queue-Terminierung, bevor du beginnst, da die Arbeit bereits an mehreren Stellen untersucht wurde. Das angeforderte Verhalten betrifft threading queue, multiprocessing queue und asyncio: Das Herunterfahren sollte zukünftige put-Aufrufe ablehnen, wartende Aufrufer entsperren und get-Aufrufe nach dem Leeren eine Ausnahme auslösen lassen, wobei immediate=True das Leeren umgeht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.