Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

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}';
        }
}

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.