Skip to content

Сервис управления рассылками API администрирования и получения статистики.

Notifications You must be signed in to change notification settings

Friskes/notification_service

Repository files navigation

Сервис уведомлений

Сервис управления рассылками API администрирования и получения статистики.

1. Зависимости

Для запуска этого проекта потребуется:

  • Git
  • Docker

2. Установка

Создайте .env файл в корне проекта с содержимым:

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 # необходимо заранее вручную создать БД, например в pgAdmin4

POSTGRES_DB=NOTIFICATION_SERVICE_DB
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=postgres
POSTGRES_PORT=5432

REDIS_HOST=redis
REDIS_PORT=6379

RABBITMQ_DEFAULT_USER=RABBITMQ_DEFAULT_USER
RABBITMQ_DEFAULT_PASS=RABBITMQ_DEFAULT_PASS
RABBITMQ_HOST=rabbitmq
RABBITMQ_PORT=5672

CELERY_APP=config
CELERY_FLOWER_URL_PREFIX=flower
CELERY_FLOWER_ADDRESS=celery-flower
CELERY_FLOWER_PORT=5555

Выполните команды:

# клонирование удаленного репозитория
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. организовать тестирование написанного кода

  2. подготовить docker-compose для запуска всех сервисов проекта одной командой

  3. сделать так, чтобы по адресу /docs/ открывалась страница со Swagger UI и в нём отображалось описание разработанного API. Пример: https://petstore.swagger.io

  4. удаленный сервис может быть недоступен, долго отвечать на запросы или выдавать некорректные ответы. Необходимо организовать обработку ошибок и откладывание запросов при неуспехе для последующей повторной отправки. Задержки в работе внешнего сервиса никак не должны оказывать влияние на работу сервиса рассылок.

  5. обеспечить подробное логирование на всех этапах обработки запросов, чтобы при эксплуатации была возможность найти в логах всю информацию по • 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

About

Сервис управления рассылками API администрирования и получения статистики.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published