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應用開闢了新途徑,有望簡化插件生態並顯著提升用户體驗。