core/README.md

61 lines
2.7 KiB
Markdown
Raw Normal View History

2024-01-26 10:28:49 +00:00
## Техстек
2021-08-20 23:17:15 +00:00
2022-11-22 05:18:48 +00:00
- sqlalchemy
2021-08-20 23:17:15 +00:00
- redis
- ariadne
- starlette
2024-01-26 10:28:49 +00:00
- granian
2021-08-20 23:17:15 +00:00
2024-01-26 10:28:49 +00:00
# Локальная разработка
2021-08-20 23:17:15 +00:00
2024-01-26 10:28:49 +00:00
Подготовьте зависимости
2021-08-20 23:17:15 +00:00
2024-01-26 10:28:49 +00:00
osx:
2021-08-20 23:17:15 +00:00
```
2022-12-03 09:50:18 +00:00
brew install redis nginx postgres
2021-08-20 23:17:15 +00:00
brew services start redis
```
2024-01-26 10:28:49 +00:00
debian/ubuntu:
2022-05-31 07:03:50 +00:00
```
2022-08-09 10:17:31 +00:00
apt install redis nginx
2021-08-20 23:17:15 +00:00
```
2024-01-26 10:28:49 +00:00
Затем запустите postgres, redis и наш API-сервер:
2023-11-27 08:12:42 +00:00
```shell
mkdir .venv
python3.12 -m venv .venv
poetry env use .venv/bin/python3.12
poetry update
2024-01-27 08:48:03 +00:00
poetry run main.py
2022-06-14 05:41:40 +00:00
```
2024-01-26 10:28:49 +00:00
## Подключенные сервисы
2021-08-20 23:17:15 +00:00
2024-01-27 08:45:29 +00:00
Для межсерверной коммуникации используются отдельные логики, папка `services/*` содержит адаптеры для использования базы данных, `redis`, кеширование и клиенты для запросов GraphQL.
2021-08-20 23:17:15 +00:00
2024-01-26 10:28:49 +00:00
### auth.py
2022-05-31 12:19:05 +00:00
2024-01-27 08:45:29 +00:00
Задайте переменную окружения `WEBHOOK_SECRET` чтобы принимать запросы по адресу `/new-author` от [сервера авторизации](https://dev.discours.io/devstack/authorizer). Событие ожидается при создании нового пользователя. Для авторизованных запросов и мутаций фронтенд добавляет к запросу токен авторизации в заголовок `Authorization`.
2022-11-27 08:19:38 +00:00
2024-01-26 10:28:49 +00:00
### viewed.py
2022-11-27 08:19:38 +00:00
2024-01-27 08:45:29 +00:00
Задайте переменные окружения `GOOGLE_ANALYTICS_TOKEN` и `GOOGLE_GA_VIEW_ID` для сбора данных из [Google Analytics](https://developers.google.com/analytics?hl=ru).
2023-10-15 18:27:44 +00:00
2024-01-26 10:28:49 +00:00
### search.py
2023-11-22 16:38:39 +00:00
2024-01-27 08:45:29 +00:00
Позволяет получать результаты пользовательских поисковых запросов в кешируемом виде от [нашего сервера](https://search.discours.io) ElasticSearch с оценкой `score`, объединенные с запросами к базе данных, запрашиваем через GraphQL API `load_shouts_search`.
2023-11-22 16:38:39 +00:00
2024-01-26 10:28:49 +00:00
### notify.py
2023-11-22 16:38:39 +00:00
2024-01-27 08:36:03 +00:00
Отправка уведомлений по Redis PubSub каналам, согласно структуре данных, за которую отвечает [сервис уведомлений](https://dev.discours.io/discours.io/notifier)
2023-11-22 16:38:39 +00:00
2024-01-26 10:28:49 +00:00
### unread.py
2023-11-22 16:38:39 +00:00
2024-01-27 08:45:29 +00:00
Счетчик непрочитанных сообщений получается через Redis-запрос к данным [сервиса сообщений](https://dev.discours.io/discours.io/inbox).
2023-11-22 16:38:39 +00:00
2024-01-26 10:28:49 +00:00
### following.py
2023-11-22 16:38:39 +00:00
2024-01-27 08:45:29 +00:00
Внутренний сервис, обеспечивающий асинхронный доступ к хранилищу подписчиков на комментарии, топики и авторы в оперативной памяти.