No description
|
All checks were successful
Build and Test / build-and-test (push) Successful in 5m0s
|
||
|---|---|---|
| .forgejo/workflows | ||
| k8s | ||
| src | ||
| tests | ||
| Dockerfile | ||
| pyproject.toml | ||
| README.md | ||
| requirements-dev.txt | ||
| requirements.txt | ||
| setup.py | ||
YR Weather Fetcher
Aplikace pro stahování hodinových předpovědí počasí z norské meteorologické služby yr.no do PostgreSQL databáze.
Funkce
- Stahování hodinových předpovědí počasí pro více lokalit
- Ukládání dat do PostgreSQL databáze pro pozdější analýzu
- Běh jako Kubernetes CronJob podle plánu (výchozí nastavení: každých 6 hodin)
- Sběr komplexních meteorologických dat včetně:
- Tlaku vzduchu
- Teploty vzduchu
- Pravděpodobnosti srážek
- Intenzity srážek
- Směru větru
- Rychlosti větru
- Nárazů větru
- Relativní vlhkosti
- Rosného bodu
- Procenta oblačnosti
- Celkového charakteru počasí
Konfigurace
Konfigurace lokalit a časů stahování v Kubernetes ConfigMap:
LOCATIONS_CONFIG: |
- code: "praha"
name: "Praha"
latitude: 50.0755
longitude: 14.4378
altitude: 235.0
notes: "Hlavní město ČR"
SCHEDULE_TIMES: |
- "00:00"
- "06:00"
- "12:00"
- "18:00"
Struktura databáze
Aplikace používá PostgreSQL databázi s následující strukturou:
locations- Ukládá informace o lokalitáchforecast_batches- Ukládá informace o každém stahováníforecasts- Ukládá samotná data předpovědí
Vývoj
Prerekvizity
- Python 3.11+
- Docker
- Kubernetes cluster (pro nasazení)
Nastavení
- Klonování repozitáře
- Instalace závislostí:
pip install -r requirements.txt
pip install -r requirements-dev.txt
- Spuštění testů:
pytest
Nasazení
- Sestavení Docker image:
docker build -t yr-weather-fetcher:latest .
- Push do registru kontejnerů:
docker tag yr-weather-fetcher:latest your-registry/yr-weather-fetcher:latest
docker push your-registry/yr-weather-fetcher:latest
- Nasazení do Kubernetes:
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/cronjob.yaml
Testování
Aplikace obsahuje sadu testů vytvořených pomocí pytest. Spusťte je následujícím způsobem:
pytest
Pro zobrazení pokrytí kódu testy:
pytest --cov=src