Skip to content

bgelov/funbox-async-api-count

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задача

Есть три сервера "maria.ru", "rose.ru", "sina.ru", которые по GET-запросу отдают свою метрику.
Напишите на вашем любимом скриптовом языке программирования (Ruby, Perl, PHP, Python, Groovy, . . .)
программу, которая будет опрашивать три сервера каждую минуту и выводить в консоль эту метрику рядом с названием сервера.

Формат запроса:
GET http://servername/api/count

Формат ответа:
{"count": 42}

Формат вывода:
2022-05-20 13:01:00 maria.ru 42
2022-05-20 13:01:00 rose.ru 43
2022-05-20 13:01:00 sina.ru 45
2022-05-20 13:02:00 maria.ru 32
2022-05-20 13:02:00 rose.ru 33
2022-05-20 13:02:00 sina.ru 34

Решение

Код: main.py

  • Обращения к API происходит каждую минуту в 00 секунд
  • Обращения происходят асинхронно

pycharm64_ZBFp1rLoGB

  • В случае недоступности хоста выводим в консоль ошибку и значение прочерк

buidL4lMP5

Тестовое API на Powershell Pode

Start-PodeServer {

    # Запускаем сервер на http://localhost:80
    Add-PodeEndpoint -Address localhost -Port 80 -Protocol Http

    Add-PodeRoute -Method Get -Path '/api/count' -ScriptBlock {
        # Возвращаем ранодомное число в JSON
        Write-PodeJsonResponse -Value @{"count" = $(Get-Random -Minimum 0 -Maximum 999) }
    }
}

Тестовая отдача JSON на nginx

server {
        location ~ ^/api/count {
           default_type application/json;
           return 200 '{"count": 111}';
        }
}