Skip to content

unit-team-spbu/uis

Repository files navigation

Сервис интересов пользователя

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

Название: uis

Структура сервиса:

Файл Описание
uis.py Код микросервиса
config.yml Конфигурационный файл со строкой подключения к RabbitMQ и MongoDB
run.sh Файл для запуска сервиса из Docker контейнера
requirements.txt Верхнеуровневые зависимости
Dockerfile Описание сборки контейнера сервиса
docker-compose.yml Изолированная развертка сервиса вместе с (RabbitMQ, MongoDB)
README.md Описание микросервиса

API

RPC

Новая анкета или обновление данных по анкете:

n.rpc.uis.create_new_q(<questionnaire>)

Args: questionnaire = [user_id, [tag_1, tag_2, ..., tag_m]]
Returns: nothing
Dispatch to the `ranking`: [user_id, {'<tag_name_1>': w_1, ..., '<tag_name_n>': w_n}]

Добавление, отмена лайка:

n.rpc.uis.add_like(like_data)
n.rpc.uis.cancel_like(like_data)

Args: like_data = [user_id, event_id]
Returns: nothing
Dispatch to the `ranking`: [user_id, {'<tag_name_1>': w_1, ..., '<tag_name_n>': w_n}]

Добавление в избранное, удаление из избранного:

n.rpc.uis.add_fav(fav_data)
n.rpc.uis.cancel_fav(fav_data)

Args: fav_data = [user_id, event_id]
Returns: nothing
Dispatch to the `ranking`: [user_id, {'<tag_name_1>': w_1, ..., '<tag_name_n>': w_n}]

Получить интересы пользователей по id:

n.rpc.uis.get_weights_by_id(user_id)

Args: user_id - id of the user
Returns: {'<tag_name_1>': w_1, ..., '<tag_name_n>': w_n}

Получить булевский список:

n.rpc.uis.get_bool_list(user_id)

Args: user_id - id of the user
Returns: [True, False, False, ...] if user is presented in db and None otherwise

Сохранить булевский список:

n.rpc.uis.save_bool_list(user_id, bool_list)

Args: 
    user_id - id of the user,
    bool_list - list like [True, False, False, ...]
Returns: nothing

HTTP

Новая анкета или обновление данных по анкете:

POST http://localhost:8000/newq HTTP/1.1
Content-Type: application/json

[user_id, [
    'tag_1', 'tag_2', ..., 'tag_m'
]]

Добавление лайка:

POST http://localhost:8000/got_like HTTP/1.1
Content-Type: application/json

[user_id, event_id]

Отмена лайка:

POST http://localhost:8000/cancel_like HTTP/1.1
Content-Type: application/json

[user_id, event_id]

Добавление в избранное:

POST http://localhost:8000/got_fav HTTP/1.1
Content-Type: application/json

[user_id, event_id]

Удаление из избранного:

POST http://localhost:8000/cancel_fav HTTP/1.1
Content-Type: application/json

[user_id, event_id]

Получить интересы пользователей по id:

GET http://localhost:8000/get_weights/<id> HTTP/1.1

Развертывание и запуск

Локальный запуск

Для локального запуска микросервиса требуется запустить контейнер с RabbitMQ и MongoDB.

docker-compose up -d

Затем из папки микросервиса вызвать

nameko run uis

Для проверки rpc запустите в командной строке:

nameko shell

После чего откроется интерактивная Python среда и обратитесь к сервису одной из команд, представленных выше в разделе rpc.

Запуск в контейнере

Чтобы запустить микросервис в контейнере вызовите команду:

docker-compose up

если вы не хотите просмотривать логи, добавьте флаг -d в конце

Микросервис запустится вместе с RabbitMQ и MongoDB в контейнерах.

Во всех случаях запуска вместе с MongoDB также разворачивается mongo-express - инструмент, с помощью которого можно просматривать и изменять содержимое подключенной базы (подключение в контейнерах сконфигурировано и производится автоматически). Сервис хостится локально на порту 8081.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published