https://github.com/bgelov/funbox-async-api-count
Python async api
https://github.com/bgelov/funbox-async-api-count
async json monitoring python python-api-client python-async python-json
Last synced: 4 months ago
JSON representation
Python async api
- Host: GitHub
- URL: https://github.com/bgelov/funbox-async-api-count
- Owner: bgelov
- License: gpl-3.0
- Created: 2023-06-15T03:35:31.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-07-06T20:23:54.000Z (almost 2 years ago)
- Last Synced: 2025-01-03T15:46:17.440Z (6 months ago)
- Topics: async, json, monitoring, python, python-api-client, python-async, python-json
- Language: Python
- Homepage:
- Size: 27.3 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Задача
```
Есть три сервера "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](https://github.com/bgelov/funbox-async-api-count/blob/main/main.py)
- Обращения к API происходит каждую минуту в 00 секунд
- Обращения происходят асинхронно
- В случае недоступности хоста выводим в консоль ошибку и значение прочерк

## Тестовое API на Powershell Pode
```
Start-PodeServer {# Запускаем сервер на http://localhost:80
Add-PodeEndpoint -Address localhost -Port 80 -Protocol HttpAdd-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}';
}
}
```