Pyodide + Service Worker 在浏览器中运行 Python ASGI 应用,Datasette Lite 将升级
Simon Willison 用 Claude Opus 4.8 协助,通过 Pyodide 和 Service Worker 在浏览器中运行 Python ASGI 应用,解决了 Web Worker 方案中 script 标签不执行的痛点。本文解析技术原理、对中文开发者的意义及国产替代方案。
一句话看懂
Simon Willison 用 Claude Opus 4.8 协助,通过 Pyodide + Service Worker 在浏览器中运行 Python ASGI 应用,解决了 Web Worker 方案中 script 标签不执行的痛点。
详细发生了什么
Datasette Lite 是 Simon Willison 开发的 Datasette 浏览器版,基于 Pyodide(Python 的 WebAssembly 实现)运行。四年前他用 Web Worker 拦截导航并调用 Python 生成 HTML,但致命缺陷是 <script> 标签内的 JavaScript 不会执行,导致部分 Datasette 功能和大量插件失效。
2026年5月30日,Simon 用 Claude Opus 4.8(通过 Claude Code for web)协助研究,改用 Service Worker 方案替代 Web Worker。Service Worker 可以拦截网络请求,让浏览器以为 Python 应用是真实服务器,从而正常执行 script 标签。他发布了两个 demo:一个基础 ASGI FastCGI 示例,以及一个运行 Datasette 1.0a31 的完整演示。Simon 表示自己还在理解细节,但计划用此方案升级 Datasette Lite。
中文圈视角
这个方案对中文开发者有几点直接意义:
-
无需服务器的 Python Web 应用:如果此方案成熟,中文用户可以在浏览器中直接运行 Python Web 框架(如 FastAPI、Starlette),无需云服务器或本地环境。对于教学、演示、轻量级数据分析场景非常实用。
-
国产平替与差距:国内类似 Pyodide 的项目有 PyWasm(阿里)和 WebPython(社区),但生态远不如 Pyodide 成熟。Service Worker 方案目前只有 Simon 的探索,国产工具链(如百度 Paddle.js、阿里 MNN)主要聚焦推理,缺乏 Python 运行时在浏览器中的完整方案。
-
对 Datasette 用户的影响:Datasette 在中国有少量数据分析用户,但知名度不高。此方案让 Datasette 插件(如可视化图表)在浏览器中正常工作,降低使用门槛。不过,Datasette Lite 依赖 Pyodide 加载 Python 标准库和第三方包,首次加载速度较慢,国内用户可能需要 CDN 加速或自建镜像。
-
监管与合规:数据完全在浏览器本地处理,不经过服务器,对数据安全敏感的用户(如金融、医疗)是利好。但 Service Worker 的离线缓存可能涉及内容安全审查,需注意。
几条值得记住的细节
- 核心改进:用 Service Worker 替代 Web Worker,解决了
<script>标签不执行的问题。 - 工具链:Claude Opus 4.8 通过 Claude Code for web 协助生成核心代码。
- 现有 demo:基础 ASGI 应用和 Datasette 1.0a31 完整版均可在线体验。
- 计划:Simon 将在理解原理后升级 Datasette Lite 正式版。
- 依赖:基于 Pyodide(WebAssembly 上的 Python 运行时),需浏览器支持 Service Worker。
一句话总结
Python Web 应用有望完全在浏览器中运行,无需服务器,对教学、演示和轻量级数据分析场景是重大利好。