ядро платформы
Go to file
Untone 6c398fc593
Some checks failed
Deploy to core / deploy (push) Failing after 1m30s
disabled-logix
2024-01-29 04:47:53 +03:00
.gitea/workflows feat: no force any more for CI deploy from Gitea 2024-01-28 18:37:47 -03:00
.github/workflows my feed query fixed 2023-07-05 16:08:17 +02:00
orm granian+precommit 2024-01-25 22:41:27 +03:00
resolvers inner-search-3 2024-01-29 04:41:46 +03:00
schemas search-fix-2 2024-01-26 04:05:25 +03:00
services disabled-logix 2024-01-29 04:47:53 +03:00
.editorconfig migration, auth, refactoring, formatting 2022-09-17 21:12:14 +03:00
.gitignore unread-fixes 2024-01-23 04:03:15 +03:00
.pre-commit-config.yaml query-fix 2024-01-26 13:28:49 +03:00
CHANGELOG.txt granian+precommit 2024-01-25 22:41:27 +03:00
Dockerfile Merge branch 'feature/core' of https://dev.discours.io/discours.io/core into feature/core 2024-01-28 10:01:28 +03:00
main.py inner-search-3 2024-01-29 04:41:46 +03:00
nginx.conf.sigil dokku-conf 2024-01-11 20:23:02 +03:00
pyproject.toml inner-search 2024-01-29 03:27:30 +03:00
README.md inner-search-2 2024-01-29 04:09:54 +03:00
server.py Merge branch 'feature/core' of v2.discours.io:core into feature/core 2024-01-28 11:40:00 +03:00
settings.py granian+precommit 2024-01-25 22:41:27 +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 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. Требует установка ELASTIC_URL (можно отдельными компонентами) и, опционально, обновляет индекс на старте если переменная ELASTIC_REINDEX задана.

notify.py

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

unread.py

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

following.py

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