The “impossibly small” Microdot web framework
Microdot: крошечный веб-фреймворк для всего
Мигель Гринберг, автор Flask Mega-Tutorial, представил Microdot — мини-фреймворк, работающий и на CPython, и на MicroPython: от IoT до облаков.
Зачем?
Зимой 2018-го в Ирландии Мигель столкнулся с «умным» отоплением, которое погрешало на ±3 °C. Он отключил термостаты, поставил на каждый этаж плату с MicroPython и датчиком (±0,5 °C) и сам включал/выключал нагрев.
Чтобы с дивана видеть температуру и статус, ему нужен был веб-сервер, но Flask и Bottle на MicroPython не лезли. Поэтому он написал Microdot — «Flask в миниатюре».
Фишки
- одна папка, ~1500 строк, нулевые зависимости
- маршруты, шаблоны, cookies, WebSocket, SSE, CORS, SSL, Basic/Digest-аутентификация, тест-клиент
- копирует API Flask:
@app.route
,request.args
,jsonify
,abort
,before_request
- работает на ESP32, Raspberry Pi Pico, обычных серверах
- ставится
pip install microdot
(CPython) илиmip install microdot
(MicroPython) - опциональные плагины: microdot-session, microdot-cors, microdot-websocket, microdot-jinja, microdot-asyncio
Код
from microdot import Microdot
app = Microdot()
@app.route('/')
async def index(req):
return {'temp': 22.5, 'heating': False}
app.run(port=80, debug=True)
Размер
ESP32: 70 КБ свободной ОЗУ остаётся после загрузки MicroPython + Microdot + приложение.
CPython: ~1 МБ venv.
Кому
- хобби-IoT: датчики, реле, роботы
- встраиваемые системы: промышленные контроллеры, автономные датчики
- прототипы: быстро поднять REST, потом перейти на Flask/FastAPI
- обучение: Flask-разработчики учатся за пять минут
Где
GitHub: github.com/miguelgrinberg/microdot
Документация: microdot.readthedocs.io
PyPI: pip install microdot
Комментарии (50)
- Microdot — это 765-строковый Python-фреймворк, который работает и на CPython, и на MicroPython; предназначен для веб-серверов на IoT-устройствах (ESP32 и др.).
- Автор @miguelgrinberg подтвердил, что расширения (шаблоны, сессии) опциональны и почти не требуют зависимостей; версия 2 внесла ломающие изменения.
- Комментаторы спорят о слове «impossibly small»: кто-то считает 765 строк нормальным минимумом, кто-то — перебором; сравнивают с Bottle, Rails 0.x и FW/1.
- Пользователи делятся опытом: SSE + htmx для живых GPIO-индикаторов, бенчмарки RPS, проекты термостатов и садовых сенсоров.
- Упоминаются альтернативы (TurboLua, BirSaat) и вопрос: «почему бы не написать это на C?»
An LLM is a lossy encyclopedia 🔥 Горячее 💬 Длинная дискуссия
LLM — это «энциклопедия с потерями»: внутри огромный массив фактов, но сжатие небезупречно. Учимся различать, где потери неважны, а где детали критичны.
Пользователь HN спросил, почему модель не сгенерирует «скелет Zephyr-проекта для Pi Pico c драйвером st7789». Ответ: не ждите, что она «знает» такую мелочь. Дайте ей точный пример — пусть работает с уже известными фактами.
Комментарии (297)
- Участники спорят, насколько точно LLM можно назвать «потерянной (lossy) энциклопедией»: одни считают аналогию полезной, другие — слишком упрощающей.
- Основной упрек: в отличие от JPEG, LLM не сигнализируют о «потерях», а выдают уверенные, но ложные или плавающие ответы.
- Альтернативные образы — «поисковик, который умеет ремиксировать», «актер в роли эксперта», «runtime-программа, которую нужно правильно запрограммировать», «врач-консультант».
- Подчеркивают: ключевое назначение LLM — продолжать диалог и помогать, а не гарантировать фактическую точность; всё нужно перепроверять.
- Некоторые советуют сохранять «несжатые» источники (книги, файлы), поскольку AI делает поиск истины всё труднее.