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