Pure Python `SimpleQueue.get()` raises `ValueError` when block is false and timeout is given
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 77.2k
- Fork
- 35.9k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
The docs for SimpleQueue.get() say that timeout is ignored when block is false. The C version does that, but the pure Python version passes timeout to threading.Semaphore.acquire() and fails:
>>> from queue import _PySimpleQueue
>>> _PySimpleQueue().get(block=False, timeout=1)
Traceback (most recent call last):
...
ValueError: can't specify timeout for non-blocking acquire
The C version raises Empty here.
A PR is on the way.
Linked PRs
- gh-156477
- gh-156487
- gh-156488
- gh-156489
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dall’implementazione in puro Python di _PySimpleQueue.get() e confronta la gestione di block=False e timeout con la versione C e la documentazione di SimpleQueue. Il lavoro è completato quando una get non bloccante con un timeout fornito segue il comportamento documentato e solleva Empty invece di ValueError; verifica il comportamento esistente mostrato nell’issue.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 25/100