Slinn
Slinn - универсальная событийно-ориентированная платформа на PythonДокументация: https://openmiot.github.io/slinn/
Исходный код: https://github.com/OpenMiot/slinn/
Преимущества Slinn¶
- Асинхронность + параллелизм(только во Free-Threaded Python)
- Поддержка плагинов и пакетный менеджер
- Гибкая декларативная настройка
- Поддержка любых сетевых протоколов
- Работа на нескольких портах в одном запущенном экземпляре
Пример HTTP-сервера¶
from slinn.net.http import HttpRouter
from slinn.net.http.responses import HttpRedirect
from slinn.net.http.filters import AnyFilter
from slinn.net.address import Address
router = HttpRouter()
@router.get('api/<str method>')
async def api(client_address: Address, method: str):
return {
'status': 'ok',
'method': method,
'ip': client_address.host
}
@router.get()
@router.get('index')
async def index():
return HttpRedirect('/helloworld')
@router(AnyFilter)
async def helloworld():
return 'Hello world!'
Начало проекта¶
Вставьте пример в my_app/app.py, затем запустите скрипт start.bat или start.sh
Для настройки проекта нужно редактировать конфиг slinn.toml
Для настройки приложения нужно редактировать %app%/config.toml
Зависимости¶
- Python 3.15 и выше (желательно без GIL)
tomlkit- управление конфигамиorjson- более быстрая работы с jsonbabel- локализация фреймворкаpydantic- валидация конфиговuv- управление зависимостями
Опциональные зависимости¶
Средства разработки фреймворка (dev):¶
pytest- тестирование фреймворкаpytest-asyncio- тестирование асинхнронных функцийpytest-describe- группировка тестовpytest-mock- более удобное создание моковpytest-cov- подсчет покрытия тестамиtaskipy- упрощение ввода командzensical- документация
Асинхронные событийные циклы, которые могут улучшить производительность (alt_loop):¶
winloop- альтернативный асинхронный событийный цикл на Windowsuvloop- альтернативный асинхронный событийный цикл на Linux/MacOS