Allow threading for sync `use_effect` calls
还没有人认领这个 Issue。
评估
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- Python
- 星标
- 8.1k
- 派生
- 332
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
reactive-python/reactpy 的其他 Issue
-
priority-3-low type-docs
难度 2/5 1-3 小时 新手友好度 65/100
reactive-python/reactpy#1034 ·
-
priority-2-moderate type-revision
难度 5/5 一周以上 新手友好度 25/100
reactive-python/reactpy#1319 ·
-
priority-1-high
难度 5/5 一周以上 新手友好度 25/100
reactive-python/reactpy#1277 ·
-
priority-3-low
难度 5/5 一周以上 新手友好度 35/100
reactive-python/reactpy#1273 · 1 个 reaction ·
-
priority-2-moderate
难度 5/5 一周以上 新手友好度 30/100
reactive-python/reactpy#1272 · 2 个 reaction ·
查看 reactive-python/reactpy 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 90/100
learningequality/ricecooker#747 ·
-
难度 2/5 1-3 小时 新手友好度 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
难度 2/5 1-3 小时 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 76/100
run-llama/llama_index#23199 ·
-
难度 2/5 1-3 小时 新手友好度 84/100
KhronosGroup/glTF-Blender-IO#2769 ·