Allow threading for sync `use_effect` calls
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start by tracing how sync use_effect calls are handled alongside the ASGI websocket consumer and document the current main-thread behavior. Define whether the default should serialize effects through a single worker, how the proposed threading parameter restores legacy behavior, and whether configurable worker counts are in scope; done requires an agreed design and corresponding coverage.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Current Situation
Users frequently run into unexpected webserver "freezing" when using sync effects due to Python's single-threaded nature. This is seemingly caused by the ASGI websocket consumer being blocked from receiving/sending data during hook operations. This behavior doesn't seem to match up with equivalent JavaScript server side frameworks.
Proposed Actions
By default we should run all sync effects in a ThreadPoolExecutor(max_workers=1). This effectively runs all sync effects in a background thread. Additionally, by running all effects in the same worker thread (max_workers=1) this implementation is semi-threadsafe (as long as the user didn't start an operation outside of his use_effect call (which they shouldn't have under React-style programming). For operations that must run on the main thread, we need a @use_effect(threading: bool = ...) parameter to switch back to legacy behavior.
We could also consider a reactpy.config.USE_EFFECT_WORKERS=... setting to allow users to modify the value of max_workers.
- Lenguaje dominante
- Python
- Estrellas
- 8.1k
- Forks
- 332
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de reactive-python/reactpy
-
Outdated GIF in Docs Abiertopriority-3-low type-docs
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
reactive-python/reactpy#1034 ·
-
priority-2-moderate type-revision
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
reactive-python/reactpy#1319 ·
-
priority-1-high
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
reactive-python/reactpy#1277 ·
-
priority-3-low
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
reactive-python/reactpy#1273 · 1 reacción ·
-
priority-2-moderate
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
reactive-python/reactpy#1272 · 2 reacciones ·
Todos los issues de reactive-python/reactpy
Issues similares
-
documentation help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
simonw/sqlite-utils#872 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100