Симон Уиллисон — создатель Datasette, инструмента для интерактивной работы с SQLite — опубликовал рабочую демонстрацию: Python ASGI-приложения запускаются прямо в браузере через Pyodide (Python в WebAssembly) и Service Workers. Никакого сервера. Никакого деплоя. Браузер тянет Python-код, выполняет ASGI-логику и отдаёт полноценные HTTP-ответы локально. Включая рабочий пример с Datasette 1.0a31.
Контекст
Pyodide — проект, который компилирует CPython в WebAssembly и запускает его в браузере. Уиллисон использовал его четыре года назад для создания Datasette Lite — версии Datasette без сервера. Тогда он построил архитектуру на Web Workers: они перехватывали навигацию и генерировали HTML через Python. Работало, но с фундаментальным ограничением: теги <script> в таком HTML браузер не выполнял. Это ломало JavaScript-функционал и большинство плагинов Datasette.
Service Workers решают проблему иначе. Они перехватывают HTTP-запросы на уровне браузера и могут возвращать ответы, которые браузер воспринимает как настоящие сетевые — со всеми заголовками, со скриптами, с полным рендером. Именно это и позволяет запустить ASGI-приложение так, словно за ним стоит реальный сервер.
Задачу реализации Уиллисон поставил Claude Opus 4.8 через Claude Code for web. По его словам, задача была поставлена утром — и к публикации уже работала. ASGI — стандартный интерфейс Python-фреймворков: FastAPI, Starlette, Django Channels, Litestar. Всё, что написано под ASGI, теоретически может работать в браузере.
Аналитика
Это не просто технический трюк. Перенос ASGI в браузер означает, что существующий Python-код можно запускать client-side с минимальными переделками. Никаких серверных затрат, никакой задержки из-за сети, никаких вопросов о том, куда уходят данные пользователя. Для privacy-чувствительных вертикалей — финансы, медицина, юриспруденция — это полноценный архитектурный паттерн, а не временное решение.
Для AI-first продуктов угол интереснее. Пайплайны обработки данных, локальные RAG-инструменты, аналитические дашборды — всё это может жить в браузере без серверной инфраструктуры. В контексте Кыргызстана и требований Цифрового кодекса №178 о локализации данных — возможность держать всю обработку на устройстве пользователя убирает целый класс compliance-проблем.
Ещё один эффект: резкое снижение порога входа. Небольшая команда или соло-разработчик может выпустить полноценный data-продукт как статичную HTML-страницу на GitHub Pages или Cloudflare Pages. Без DevOps, без VPS, без баз данных на сервере. Это меняет экономику запуска инструментальных продуктов.
Кейсы применения в бизнесе
B2B-SaaS стартап. Если у вас есть Python-логика для анализа клиентских данных, её можно упаковать в браузерный инструмент. Пользователь загружает CSV или SQLite-файл — всё обрабатывается локально, данные не покидают его устройство. Это мощный аргумент в переговорах с enterprise-клиентами, у которых строгие политики по передаче данных.
Корпорация с legacy Python. Если у компании есть скрипты для отчётности или внутренней аналитики, их можно завернуть в ASGI-приложение и раздать сотрудникам как обычную веб-страницу — без деплоя, без VPN, без зависимости от корпоративного сервера. Особенно ценно для распределённых команд с разными сетевыми окружениями.
SMB и локальный бизнес в КР/СНГ. Для компаний без бюджета на серверную инфраструктуру это рабочий путь: инструменты для анализа продаж, склада, клиентской базы — всё работает в браузере с локальными файлами. Никакого облака, никакой абонентской платы за хостинг.
Кейсы в личной жизни
Разработчик. Собери личный инструмент для работы с данными (логи, базы, экспорты) как статичную страницу с Pyodide и ASGI-бэкендом внутри. Деплоишь на GitHub Pages — и у тебя персональный дата-инструмент, доступный с любого устройства, без серверных расходов и без обслуживания.
Контент-мейкер и аналитик. Обработка данных для контента — YouTube-аналитика, парсинг таблиц, статистика каналов — может жить в браузерном приложении. Загружаешь экспорт, получаешь результат. Никаких API-лимитов, никакого ожидания серверного ответа.
Студент и преподаватель. Интерактивные Python-упражнения и туториалы можно собрать как статичные страницы. Не нужно поднимать Jupyter-сервер, не нужно просить IT-разрешение на деплой — достаточно HTML-файла и браузера. Это меняет формат обучения в условиях ограниченной инфраструктуры.
Как применить сегодня
- Изучи Pyodide — официальная документация содержит примеры запуска Python-пакетов в браузере без сервера. Начни с базовых примеров импорта numpy или pandas.
- Посмотри на демо Datasette Lite от Уиллисона — это референсная архитектура для понимания того, как ASGI работает через Service Workers прямо сейчас.
- Проверь свои Python-зависимости на совместимость с Pyodide. Чистые Python-пакеты переносятся легко; C-расширения требуют предварительной компиляции под WebAssembly или замены.
- Используй Claude Code для генерации boilerplate кода Service Worker и ASGI-обёртки — задача хорошо формализуется через промпт, что прямо подтверждает опыт Уиллисона.
- Для privacy-first сценариев — заложи client-side обработку в roadmap как архитектурный вариант уже сейчас, пока экосистема Pyodide + ASGI только формируется.