/MetricClientServer

Клиент и асинхронный сервер для приема и отправки метрик

Primary LanguagePython

MetricClientServer

Клиент и асинхронный сервер для приема и отправки метрик. Сервер хранит метрики в структурах данных (идет перенос хранения в postgres).

Прокотол взаимодействия

Метрики хранятся по ключу формата <server_name>.<metric>\n. Существует специальный ключ *\n для получения всех данных хранящихся на сервере.

Запросы клиента get <key>\n — получить данные по ключу put <key> <value> <timestamp>\n — отправить значение с соответствующий ключом, значением и опциональной временной меткой (если не указана, сервер по умолчанию ставит время принятия) `

Ответ сервера <status>\n<data>\n\n — в зависимости от статуса (ok, error) отправляет данныев формате <key> <data>\n

Пример работы протокола

Пусть на сервере хранятся данные

key value timestamp
"palm.cpu" 2.0 1150864247
"palm.cpu" 0.5 1150864248
"eardrum.cpu" 3.0 1150864250

Тогда по запросу get palm.cpu\n придет ответ: ok\npalm.cpu 2.0 1150864247\npalm.cpu 0.5 1150864248\n\n

Использование

Для запуска сервера нобходимо выполнить команду python3 Server.py и ввести адрес и порт в формате <adress>:<port>

Работа клиента инкапсулирована в классе Client, у которого есть метод get, принимающий ключ в качестве аргумента, и метод put, принимающий ключ, значение и опциональную временную метку.


Выполненный проект из курса «Погружение в Python»