uvloop may sleep less than `n` for asyncio.sleep(n)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Inizia eseguendo la riproduzione fornita con il loop asyncio predefinito e uvloop, quindi traccia il modo in cui uvloop gestisce i timer di asyncio.sleep. Confronta la durata misurata con il ritardo richiesto e aggiungi un test di regressione per il tempo minimo di sospensione. Il lavoro è completato quando asyncio.sleep(n) non restituisce il controllo prima che sia trascorso n.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug Description
When calling asyncio.sleep, uvloop sometimes sleeps for fractionally less then the requested sleep time. E.g. await asyncio.sleep(0.1) -> Sleeps for 0.0991.
Expected behavior
Should always sleep for at least the specified time.
Environment
- Operating System:
Fedora 43 - Python Version:
Python 3.13.12 - uvloop Version:
0.22.1
Steps to Reproduce
Run the following script and observe output:
import asyncio
import statistics
import time
async def main():
sleep_times = []
for _ in range(100):
start_time = time.perf_counter()
await asyncio.sleep(0.1)
end_time = time.perf_counter()
sleep_times.append(end_time - start_time)
print(f"Min sleep time: {min(sleep_times):.4f} seconds")
print(f"Max sleep time: {max(sleep_times):.4f} seconds")
print(f"Average sleep time: {statistics.mean(sleep_times):.4f} seconds")
if __name__ == "__main__":
print("With default asyncio event loop:")
asyncio.run(main())
print("With uvloop event loop:")
import uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
asyncio.run(main())
Output:
With default asyncio event loop:
Min sleep time: 0.1001 seconds
Max sleep time: 0.1008 seconds
Average sleep time: 0.1002 seconds
With uvloop event loop:
Min sleep time: 0.0991 seconds
Max sleep time: 0.1011 seconds
Average sleep time: 0.1001 seconds
- Lingua principale
- Cython
- Stelle
- 11.9k
- Fork
- 615
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
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.
Altre issue di MagicStack/uvloop
-
License not clear Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
MagicStack/uvloop#759 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
MagicStack/uvloop#741 · 2 reazioni ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
MagicStack/uvloop#702 · 8 commenti · 9 reazioni ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
MagicStack/uvloop#763 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
MagicStack/uvloop#760 ·
Tutte le issue di MagicStack/uvloop
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
use-agent-os/agent-os#3312 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
-
needs-acceptance wg/data-plane-networking
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
vllm-project/semantic-router#4024 · 1 commento ·
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
amponce/archive-movie-browser#165 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100