ядро платформы
Go to file
Untone eba97e967b
Some checks failed
Deploy on push / deploy (push) Failing after 10s
thread-lock-fix2
2024-08-07 13:30:41 +03:00
.gitea/workflows selectinload 2024-08-07 12:57:01 +03:00
.github/workflows my feed query fixed 2023-07-05 16:08:17 +02:00
cache postquery-topics-authors 2024-08-07 12:18:29 +03:00
orm shouts-load-optimisations 2024-08-07 11:35:59 +03:00
resolvers sync-viewed-stat 2024-08-07 13:15:58 +03:00
schema sync-viewed-stat 2024-08-07 13:15:58 +03:00
services thread-lock-fix2 2024-08-07 13:30:41 +03:00
utils moved 2024-08-07 08:57:56 +03:00
__init__.py buildsystemver-fix-2 2024-02-19 16:29:05 +03:00
.editorconfig migration, auth, refactoring, formatting 2022-09-17 21:12:14 +03:00
.gitignore feat: gitea workflow with Uploader check is runing, plus in server.py is checker too 2024-05-05 16:35:19 -03:00
.pre-commit-config.yaml ruff-update 2024-06-04 09:10:52 +03:00
app.json 1sec-delay 2024-02-21 23:12:47 +03:00
CHANGELOG.txt shouts-load-optimisations 2024-08-07 11:35:59 +03:00
Dockerfile .. 2024-04-10 16:09:03 +03:00
main.py refactored-starting 2024-08-07 09:51:09 +03:00
nginx.conf.sigil test: encrease users from one ip to 10000 to see if something chnages on stress press tests 2024-07-03 01:40:00 -03:00
pyproject.toml shouts-load-optimisations 2024-08-07 11:35:59 +03:00
README.md trigdeploy 2024-03-13 23:02:41 +03:00
server.py moved 2024-08-07 08:57:56 +03:00
settings.py fmt 2024-04-17 18:32:23 +03:00

Техстек

  • 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 server.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. Требует установка ELASTIC_HOST, ELASTIC_PORT, ELASTIC_USER и ELASTIC_PASSWORD.

notify.py

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

unread.py

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