Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/friskes/notification_service
Сервис управления рассылками API администрирования и получения статистики.
https://github.com/friskes/notification_service
asyncio celery celery-flower django docker drf drf-yasg httpx postgres python rabbitmq redis
Last synced: 24 days ago
JSON representation
Сервис управления рассылками API администрирования и получения статистики.
- Host: GitHub
- URL: https://github.com/friskes/notification_service
- Owner: Friskes
- Created: 2023-11-26T16:37:36.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-02-12T19:21:11.000Z (9 months ago)
- Last Synced: 2024-02-12T20:34:50.071Z (9 months ago)
- Topics: asyncio, celery, celery-flower, django, docker, drf, drf-yasg, httpx, postgres, python, rabbitmq, redis
- Language: Python
- Homepage:
- Size: 27.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Сервис уведомлений
Сервис управления рассылками API администрирования и получения статистики.#### Задание https://vans-tan-09u.craft.me/n6OVYFVUpq0o6L
## 1. Зависимости
Для запуска этого проекта потребуется:
- Git
- Docker## 2. Установка
Создайте .env файл в корне проекта с содержимым:
```shell script
PROBE_SERVER_URL=https://probe.fbrq.cloud/v1/send/
PROBE_SERVER_TOKEN=<секретный JWT токен>CELERY_AUTORELOAD_WITH_DOCKER=1
RUN_DEV_SERVER_WITH_DOCKER=1
WINDOWS_POSTGRES_INSTALLED=1 # необходимо заранее вручную создать БД, например в pgAdmin4POSTGRES_DB=NOTIFICATION_SERVICE_DB
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=postgres
POSTGRES_PORT=5432REDIS_HOST=redis
REDIS_PORT=6379RABBITMQ_DEFAULT_USER=RABBITMQ_DEFAULT_USER
RABBITMQ_DEFAULT_PASS=RABBITMQ_DEFAULT_PASS
RABBITMQ_HOST=rabbitmq
RABBITMQ_PORT=5672CELERY_APP=config
CELERY_FLOWER_URL_PREFIX=flower
CELERY_FLOWER_ADDRESS=celery-flower
CELERY_FLOWER_PORT=5555
```Выполните команды:
```shell script
# клонирование удаленного репозитория
git clone https://gitlab.com/Friskes/notification_service.git
# создание образа и запуск контейнеров
docker compose up --build -d
# создание суперпользователя для входа в админку
docker exec -it wsgiserver python manage.py createsuperuser
# выполнение тестов
docker exec -it wsgiserver python manage.py test notification.tests
# остановка контейнеров
docker compose down
```Адрес документации к API:
```
http://127.0.0.1:8000/docs/
```### Выполненые дополнительные задания:
1. организовать тестирование написанного кода3. подготовить docker-compose для запуска всех сервисов проекта одной командой
5. сделать так, чтобы по адресу /docs/ открывалась страница со Swagger UI и в нём отображалось описание разработанного API. Пример: https://petstore.swagger.io
9. удаленный сервис может быть недоступен, долго отвечать на запросы или выдавать некорректные ответы. Необходимо организовать обработку ошибок и откладывание запросов при неуспехе для последующей повторной отправки. Задержки в работе внешнего сервиса никак не должны оказывать влияние на работу сервиса рассылок.
12. обеспечить подробное логирование на всех этапах обработки запросов, чтобы при эксплуатации была возможность найти в логах всю информацию по
• id рассылки - все логи по конкретной рассылке (и запросы на api и внешние запросы на отправку конкретных сообщений)
• id сообщения - по конкретному сообщению (все запросы и ответы от внешнего сервиса, вся обработка конкретного сообщения)
• id клиента - любые операции, которые связаны с конкретным клиентом (добавление/редактирование/отправка сообщения/…)### Полезное
```
https://stackoverflow.com/questions/71081084/modern-best-approach-to-using-django-orm-with-async
https://stackoverflow.com/questions/74737310/sync-to-async-django-orm-queryset-foreign-key-property
https://stackoverflow.com/questions/5445174/or-operator-in-django-model-queries
https://stackoverflow.com/a/36257323/19276507
```