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-26 10:28:49 +00:00
poetry granian --no-ws --host 0.0.0.0 --port 8080 --interface asgi main:app
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-26 10:28:49 +00:00
Для межсерверной коммуникации используется разны механики, похожим образом это устроено в других сервисах нашей инфраструктуры.
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-26 10:28:49 +00:00
Настройте переменную окружения WEBHOOK_SECRET и настройте webhook-полезную нагрузку на /new-author. Он ожидается при создании нового пользователя. Н а фронтенде включите заголовок Authorization с токеном из запроса signIn или мутации registerUser.
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-26 10:28:49 +00:00
Для статистики просмотров установите переменные окружения GOOGLE_ANALYTICS_TOKEN и GOOGLE_GA_VIEW_ID для с б о р а данных из Google Analytics.
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-26 10:28:49 +00:00
Результаты 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-26 10:28:49 +00:00
Отправка уведомлений по Redis PubSub каналам
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-26 10:28:49 +00:00
Счетчик непрочитанных сообщений получается через Redis-запрос к данным сервиса сообщений.
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-26 10:28:49 +00:00
Внутренний сервис, обеспечивающий асинхронный доступ к оперативному хранилищу подписчиков на комментарии, топики и авторы.