core/README.md
Untone ebdfdb2613
Some checks failed
Deploy to core / deploy (push) Failing after 2m16s
ga4-data-api-usage
2024-01-28 16:26:40 +03:00

2.7 KiB
Raw Blame History

Техстек

  • sqlalchemy
  • redis
  • ariadne
  • starlette
  • granian

Локальная разработка

Подготовьте зависимости

osx:

brew install redis nginx postgres
brew services start redis

debian/ubuntu:

apt install redis nginx

Затем запустите postgres, redis и наш API-сервер:

mkdir .venv
python3.12 -m venv .venv
poetry env use .venv/bin/python3.12
poetry update
poetry run main.py

Подключенные сервисы

Для межсерверной коммуникации используются отдельные логики, папка 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.

notify.py

Отправка уведомлений по Redis PubSub каналам, согласно структуре данных, за которую отвечает сервис уведомлений

unread.py

Счетчик непрочитанных сообщений получается через Redis-запрос к данным сервиса сообщений.

following.py

Внутренний сервис, обеспечивающий асинхронный доступ к хранилищу подписчиков на комментарии, топики и авторы в оперативной памяти.