Как стать автором
Обновить

Jija python async framework

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров3.9K

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.

Заключение

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

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

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

Теги:
Хабы:
Всего голосов 7: ↑5 и ↓2+5
Комментарии4

Публикации

Истории

Работа

Data Scientist
96 вакансий
Python разработчик
202 вакансии

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн