Blocking synchronous I/O (time.sleep, urllib) inside async event loop degrades performance
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- backend, performance
Direzione di ricerca
Inizia in local_browser.py, in _is_local_cdp_available(), _local_cdp_page_targets(), _ensure_local_cdp_page_target() e _ensure_local_cdp_browser(); esamina come vengono chiamati questi helper e rivedi la dipendenza httpx esistente in pyproject.toml. Sostituisci le operazioni HTTP e sleep bloccanti con equivalenti asincroni, quindi verifica che l'avvio di CDP non blocchi né impedisca la cancellazione del ciclo di polling.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
In \local_browser.py, several synchronous I/O operations run inside async methods, blocking the asyncio event loop:
- _is_local_cdp_available()\ (line 58) and _local_cdp_page_targets()\ (line 73) use \urllib.request\ synchronously
- _ensure_local_cdp_browser()\ (line 262) uses \ ime.sleep(0.2)\ in a polling loop, blocking the loop for up to 10 seconds
- _ensure_local_cdp_page_target()\ (line 93) uses synchronous urllib
\httpx\ is already listed as a dependency in \pyproject.toml\ (line 11) but isn't used anywhere.
Impact
- The event loop is blocked during CDP browser startup for up to 10 seconds
- \ ime.sleep()\ is not interruptible (unlike \syncio.sleep())
- Concurrent operations on the same event loop cannot make progress
- The polling loop cannot be cancelled mid-wait
Suggested Fix
Replace the synchronous helpers with async versions using \httpx.AsyncClient, convert _ensure_local_cdp_browser\ to async, and use \syncio.sleep()\ instead of \ ime.sleep().
The fix is straightforward since httpx is already a project dependency.
- Lingua principale
- Python
- Stelle
- 6k
- Fork
- 385
- 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 microsoft/Webwright
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
persistent_local_browser broken on Windows: signal.SIGTERM and start_new_session are POSIX-only Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
Tutte le issue di microsoft/Webwright
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ClickHouse/clickhouse-connect#1057 ·
-
bug ci good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
documentation
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
inmanta/inmanta-core#10835 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100