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

Sign up
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

AltStyle によって変換されたページ (->オリジナル) /