Данный документ содержит описание работы и информацию о развертке микросервиса-обертки для хранилища информации о мероприятиях
Название сервиса: event_das
Структура сервиса:
Файл | Описание |
---|---|
event_das.py |
Код микросервиса |
config.yml |
Конфигурационный файл со строкой подключения к RabbitMQ и MongoDB |
run.sh |
Файл для запуска сервиса из Docker контейнера |
requirements.txt |
Верхнеуровневые зависимости |
requirements.lock |
Все зависимости (pip freeze ) |
Dockerfile |
Описание сборки контейнера сервиса |
docker-compose.yml |
Изолированная развертка сервиса вместе с (RabbitMQ, MongoDB) |
docker-compose.local.yml |
Развертка зависимостей для дебаггинга (RabbitMQ, MongoDB) |
.rest |
Тесты взаимодействия с HTTP эндпоинтами микросервиса |
README.md |
Описание микросервиса |
Сохранить мероприятия:
n.rpc.event_das.save_events(events)
Args: list of events
Returns: nothing
Получить мероприятие по его ид:
n.rpc.event_das.get_event_by_id(event_id)
Args: event_id
Return: event as dictionary object
Получить мероприятия, отсортированные по дате:
n.rpc.event_das.get_events_by_date()
Args: nothing
Returns: list of actual events sorted by date
Получить тэги мероприятия по его ид:
n.rpc.event_das.get_tags_by_id(event_id)
Args: event_id
Returns: list of all tags related to the event
Получить список ид всех мероприятий с их тэгами в виде словаря:
n.rpc.event_das.get_event_tags()
Args: nothing
Returns: events like {'event_1_id': ['tag_1',...,'tag_n'], ..., 'event_m_id':['tag_1',...,'tag_k']}
Сохранить мероприятия:
POST http://localhost:8000/events HTTP/1.1
Content-Type: application/json
[
{
"title": "Видео+Конференция 2020",
"type": "Конференция",
"isPaid": true,
"isOnline": true,
"location": "Москва, Россия",
"startDate": "13.10.2020",
"endDate": "14.10.2020",
"description": "...",
"meta": {
"it_events_crawler": "18960"
}
}, ..., {}
]
Получить мероприятия, отсортированные по дате:
GET http://localhost:8000/allevents HTTP/1.1
Получить тэги мероприятия по его ид:
GET http://localhost:8000/events/<string:id>/tags HTTP/1.1
Получить список ид всех мероприятий с их тэгами в виде словаря:
GET http://localhost:8000/tags HTTP/1.1
Для локального запуска микросервиса требуется запустить контейнер с RabbitMQ и MongoDB. Для этого есть специальный docker-compose.local.yml
. Чтобы запустить:
docker-compose --file docker-compose.local.yml up -d
Затем из папки микросервиса вызвать
nameko run event_das
Для проверки rpc
запустите в командной строке:
nameko shell
После чего откроется интерактивная Python среда. Обратитесь к сервису одной из команд, представленных выше в разделе rpc
Чтобы запустить микросервис в контейнере вызовите команду:
docker-compose up
если вы не хотите просмотривать логи, добавьте флаг
-d
в конце
Микросервис запустится вместе с RabbitMQ и MongoDB в контейнерах.
Во всех случаях запуска вместе с MongoDB также разворачивается mongo-express - инструмент, с помощью которого можно просматривать и изменять содержимое подключенной базы (подключение в контейнерах сконфигурировано и производится автоматически). Сервис хостится локально на порту 8081.