Datasette Lite переезжает с Web Workers на Service Workers для запуска ASGI в браузере
Простым языком
Datasette — это Python-инструмент для просмотра и публикации баз данных. Datasette Lite запускает его прямо в браузере через Pyodide (Python, скомпилированный в WebAssembly). Раньше для этого использовались Web Workers — изолированные потоки, которые не могли выполнить JavaScript из ответов. Теперь вместо них Service Workers — сетевые прокси на уровне браузера, которые позволяют ответам обрабатываться нормально, включая JS-скрипты.
Что нового
- Замена Web Worker на Service Worker для перехвата HTTP-запросов в браузере
- Service Worker работает как сетевой прокси, а не как изолированный поток — это позволяет исполнять JS в ответах
- ASGI-приложение (FastAPI/Starlette) запускается внутри Pyodide и обрабатывает запросы, перехваченные Service Worker'ом
- Реализация выполнена AI-агентом (Claude Opus 4.8) по задаче, а не вручную
Вердикт
Паттерн Service Worker + Pyodide + ASGI применим для любых Python-веб-приложений, которые нужно запускать в браузере без сервера. Ограничения: это ранний прототип, нет метрик производительности, Service Workers не работают в некоторых контекстах (incognito, HTTP). Для Datasette Lite миграция ещё не завершена.
Service Worker в роли ASGI-прокси позволяет Pyodide-приложениям в браузере отдавать полноценные HTTP-ответы с исполняемым JS — в отличие от Web Worker, где <script> теги мертвы.