Jija python async framework

от автора

Jija — это асинхронный Python фреймворк, который разрабатывается для облегчения создания асинхронных веб-приложений. Фреймворк предоставляет удобный интерфейс для обработки запросов и формирования ответов, а также поддерживает работу с базами данных и созданием документации.

При создании jija я думал об удобстве использования сборщика приложения джанги и лёгкости и асинхронности fastapi.

Вы можете быстро создать сервис, который спокойно работает в асинхроне, и создания структуры и сборки которого вам не нужно париться, как это происходит с fastapi, сборщик сделает всё за вас, прямо как в django, но в разы меньше настроек.

Краткий экскурс

Для работы с Jija, сначала нужно установить его с помощью pip:

pip install jija

Теперь надо создать пуру базовых файлов

main.py, который будет использоваться как точка входа

from jija.apps import Apps  if __name__ == '__main__':     import settings     Apps.run_command()

settings.py, основной файл настроек

from pathlib import Path from jija import config  config.StructureConfig(     project_path=Path(__file__).parent )  config.NetworkConfig(     host='localhost', )

Тут мы указали корневую папку проекта и адрес, на котором запустится сервер

Если вы используете виртуальную среду и её файлы лежат в папке проекта, необходимо добавить ещё одну настройку, которая исключит проверку файлов виртуальной среды на изменение

config.DevConfig(     reloader_excluded={'venv'} )

После того как основные файлы заполненны, переходим к созданию вьюх и роутов к ним

apps/my_app/views.py

from jija import views, response  class MyView(views.View):     def get(self):         return response.JsonResponse({'status': 'ok'})

apps/my_app/routes.py

from jija import router from .views import *  routes = [     router.Endpoint('/', MyView), ]

После чего запускаем команду python main.py run и открываем браузер на http://localhost:8080/

Возможно, у вас начали появляться мысли по типу: «Это же куда сложнее чем запустить тоже самое на fastapi», с чем я конечно соглашусь, но если надо будет сделать что-то более сложное, то со структурой в fastapi тоже придётся повозиться и кода там будет значительно больше, а писать впадлу.

На данный момент в нём реализованны следущие функции:

  • Сериализаторы

  • Поддержка свагера

  • Поддержка ORM

  • Базовая поддержка авторизации

Ещё предстоит сделать:

  • Переработать концепцию авторизации

  • Добавить больше типов авторизации

  • CLI для создания проекта

  • Доку по референсам

  • Доку по драйверам

  • Запихнуть поддержку WS в свагер

  • Поддержку нормального продакшн режима

  • Поддержку команд пользователя

  • Поддержку командной строки

Так же планирую развивать фреймворк в сторону модульности, чтобы можно было заменить любой компонент на тот, который вам больше нравится и связать его с остальными с помощью драйвера, что уже реализовано с ORM.

Заключение

Да, на данный момент проект ещё сырой и местами криво написан, нет полного покрытия тестами, но вы всегда можете стать его контрибьютором, указать на какую-либо ошибку или предложить фичу.

Ссылка на проект

Ссылка на документацию


ссылка на оригинал статьи https://habr.com/ru/articles/730896/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *