Backend для системы задач, реализованный на FastAPI. Программа поддерживает аутентификацию пользователей через JWT-токены, работу с Redis для хранения данных (ttl 60 сек) и обмена сообщениями через pub/sub.
/login
: получение JWT-токена для аутентификации./write
: запись данных в Redis и публикация в канал./read
: чтение данных из Redis./longpoll
: long polling для ожидания новых сообщений из канала (таймаут 120 сек)./metrics
: prometheus-метрики.
- Python
- Зависимости (см.
requirements.txt
) - Redis-сервер
- Конфигурация в файле
settings.py
- Установите WSL и Redis.
- Установите зависимости:
pip install -r requirements.txt
- Настройте конфигурацию
- Запустите сервер
python main.py
```bash
$login = Invoke-RestMethod -Uri "http://127.0.0.1:8080/login" -Method Post -ContentType "application/x-www-form-urlencoded" -Body "username=admin&password=any"
$token = $login.access_token
$token
```bash
$body = @{ data = "task 1" } | ConvertTo-Json
Invoke-RestMethod -Uri "http://127.0.0.1:8080/write" -Method Post -Headers @{ Authorization = "Bearer $token" } -ContentType "application/json" -Body $body
```bash
Invoke-RestMethod -Uri "http://127.0.0.1:8080/read" -Headers @{ Authorization = "Bearer $token" }
```bash
Invoke-RestMethod -Uri "http://127.0.0.1:8080/longpoll" -Headers @{ Authorization = "Bearer $token" }
```bash
$body2 = @{ data = "longpoll task" } | ConvertTo-Json
Invoke-RestMethod -Uri "http://127.0.0.1:8080/write" -Method Post -Headers @{ Authorization = "Bearer $token" } -ContentType "application/json" -Body $body2
```bash
$response = Invoke-WebRequest -Uri http://localhost:8080/metrics -Method GET -ErrorAction Stop
Write-Output $response.StatusCode
Write-Output $response.Content
Автор: despicable21