.gitea/workflows | ||
.github/workflows | ||
cache | ||
orm | ||
resolvers | ||
schema | ||
services | ||
utils | ||
__init__.py | ||
.editorconfig | ||
.gitignore | ||
.pre-commit-config.yaml | ||
app.json | ||
CHANGELOG.txt | ||
Dockerfile | ||
main.py | ||
nginx.conf.sigil | ||
pyproject.toml | ||
README.md | ||
server.py | ||
settings.py |
Техстек
- sqlalchemy
- redis
- ariadne
- starlette
- granian
Локальная разработка
Запустите API-сервер с ключом dev
:
mkdir .venv
python3.12 -m venv .venv
poetry env use .venv/bin/python3.12
poetry update
poetry run server.py dev
Полезные команды
poetry run ruff check . --fix --select I # линтер и сортировка импортов
poetry run ruff format . --line-length=120 # форматирование кода
Подключенные сервисы
Для межсерверной коммуникации используются отдельные логики, папка services/*
содержит адаптеры для использования базы данных, redis
, кеширование и клиенты для запросов GraphQL.
auth.py
Задайте переменную окружения WEBHOOK_SECRET
чтобы принимать запросы по адресу /new-author
от сервера авторизации. Событие ожидается при создании нового пользователя. Для авторизованных запросов и мутаций фронтенд добавляет к запросу токен авторизации в заголовок Authorization
.
viewed.py
Задайте переменные окружения GOOGLE_KEYFILE_PATH
и GOOGLE_PROPERTY_ID
для получения данных из Google Analytics.
search.py
Позволяет получать результаты пользовательских поисковых запросов в кешируемом виде от ElasticSearch с оценкой score
, объединенные с запросами к базе данных, запрашиваем через GraphQL API load_shouts_search
. Требует установка ELASTIC_HOST
, ELASTIC_PORT
, ELASTIC_USER
и ELASTIC_PASSWORD
.
notify.py
Отправка уведомлений по Redis PubSub каналам, согласно структуре данных, за которую отвечает сервис уведомлений
unread.py
Счетчик непрочитанных сообщений получается через Redis-запрос к данным сервиса сообщений.