# Simon Willison 把 Python 网页应用直接跑在了浏览器里，不再需要后端服务器

> 原标题：在浏览器中通过 Pyodide 和 Service Worker 运行 Python ASGI 应用

- 来源：AI HOT 精选
- 发布时间：2026-05-30T21:02:16.000Z
- AX AI 日报：https://ai-daily.ax0x.ai/items/30639
- 原文：https://simonwillison.net/2026/May/30/pyodide-asgi-browser

## 摘要

Simon Willison 用 Pyodide（把 Python 编译成浏览器能跑的 WebAssembly）加上 Service Worker，让 Python 的 ASGI 网页应用完全在浏览器里运行。他让 Claude Opus 4.8 帮忙写了代码，做了两个能用的演示：一个基础 FastAPI 例子，另一个是他自己的 Datasette 1....

## 推荐理由

Simon Willison 用 Claude Opus 4.8 辅助开发，把 Python ASGI 应用搬进了浏览器，已经跑通了 Datasette 的演示。这件事的钩子在于：浏览器不再只是前端沙箱，可以直接当应用服务器用。技术栈交代得清楚，Pyodide、Service Worker、ASGI FastCGI 每一步都有据可查，不是概念图而是能跑的代码。我会先打个折，这目前还是个开发者实验，离生产环境还有距离，但思路对无服务器和边缘部署的人有启发。

## 锐评

Simon Willison 把 Python 的 ASGI 网页应用（比如 FastAPI 和他自己的 Datasette）完全塞进了浏览器。做法是用 Pyodide 把 Python 编译成 WebAssembly，再配合 Service Worker 拦截浏览器请求，直接在本地跑 Python 后端逻辑。这比四年前他做的 Datasette Lite 更进一步：旧方案用 Web Worker 模拟，页面里的 JavaScript 脚本跑不起来，很多插件会挂；新方案用 Service Worker 走完整的 ASGI 协议，脚本能正常执行，兼容性好得多。

代码是让 Claude Opus 4.8 帮忙写的，他给了两个能跑的演示：一个基础 FastAPI 例子，一个 Datasette 1.0a31 完整版。这说明方案不是针对某个应用的特例，对遵循 ASGI 标准的 Python 应用都适用。

不过正文没提性能开销和首屏加载时间。Pyodide 本身初始化就不快，加上 Service Worker 拦截所有请求，实际延迟和内存占用会是多少，目前没有数据。另外，这种方案只适合处理同源请求，跨域场景和需要真实后端数据库的应用还是得老老实实搭服务器。他说等自己搞明白原理后会升级 Datasette Lite，到时候可以看看实际体验到底怎么样。
