AI News HubLIVE
站内改写

利用Pyodide和服务工作线程在浏览器中运行Python ASGI应用

Simon Willison的研究项目通过在浏览器中使用Pyodide和服务工作线程(Service Workers)来运行Python ASGI应用,解决了此前Web Workers方法无法执行JavaScript脚本的问题,并通过FastAPI和Datasette的demo验证了其通用性。

文章情报

工程师进阶

要点

  • 利用Pyodide和服务工作线程在浏览器中运行Python ASGI应用
  • 替代了基于Web Workers的方案,解决了脚本执行问题
  • 通过FastAPI和Datasette demo展示可行性
  • 计划将Datasette Lite升级至新架构

为什么重要

这条新闻值得关注,因为利用Pyodide和服务工作线程在浏览器中运行Python ASGI应用。

技术影响

可能影响模型选型、推理成本、产品能力和评测基准。

Simon Willison近日发布了一项突破性研究成果,成功在浏览器中通过Pyodide和服务工作线程(Service Workers)完整运行Python ASGI应用。该项目旨在让Datasette Lite等应用完全在客户端运行,无需后端服务器支持,仅需静态文件服务器即可。

Datasette Lite是Willison基于Pyodide(WebAssembly上的Python运行时)构建的完全在浏览器中运行的Datasette版本。四年前最初实现时,他采用了Web Workers技术,通过拦截导航操作并运行Python应用来获取生成的HTML。这种方法虽然可行,但存在一个关键缺陷:Web Workers无法执行<script>标签中的JavaScript代码,导致部分Datasette功能及其大量插件无法正常工作。

为了克服这一限制,Willison利用Claude Opus 4.8(通过Claude Code for Web)设计了一套基于Service Workers的新方案。在新架构下,所有指向/app/路径的同源请求都会被Service Worker拦截,然后通过ASGI协议在Pyodide中执行Python应用。这样生成的HTML中的JavaScript能够正常执行,从而恢复了完整的Datasette体验。

Willison提供了两个demo来验证该方法的有效性:一个基础的ASGI FastCGI演示,以及一个运行Datasette 1.0a31的完整演示。这两个demo均展示了该方案的通用性,可适用于任何ASGI应用。

目前,Willison仍在深入研究具体实现细节,但计划在完全理解后全面升级Datasette Lite。这一进展为在浏览器中运行Python Web应用开辟了新途径,有望简化插件生态并显著提升用户体验。