No description
Find a file
Radek d89bd4efcf
All checks were successful
Build and Test / build-and-test (push) Successful in 5m0s
Changes
2025-04-11 13:55:39 +02:00
.forgejo/workflows Push added 2025-04-11 13:29:51 +02:00
k8s Initial load 2025-04-11 13:17:11 +02:00
src Changes 2025-04-11 13:55:39 +02:00
tests Initial load 2025-04-11 13:17:11 +02:00
Dockerfile Changes 2025-04-11 13:42:14 +02:00
pyproject.toml Initial load 2025-04-11 13:17:11 +02:00
README.md Initial load 2025-04-11 13:17:11 +02:00
requirements-dev.txt Initial load 2025-04-11 13:17:11 +02:00
requirements.txt Initial load 2025-04-11 13:17:11 +02:00
setup.py Initial load 2025-04-11 13:17:11 +02:00

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:

  1. locations - Ukládá informace o lokalitách
  2. forecast_batches - Ukládá informace o každém stahování
  3. forecasts - Ukládá samotná data předpovědí

Vývoj

Prerekvizity

  • Python 3.11+
  • Docker
  • Kubernetes cluster (pro nasazení)

Nastavení

  1. Klonování repozitáře
  2. Instalace závislostí:
pip install -r requirements.txt
pip install -r requirements-dev.txt
  1. Spuštění testů:
pytest

Nasazení

  1. Sestavení Docker image:
docker build -t yr-weather-fetcher:latest .
  1. Push do registru kontejnerů:
docker tag yr-weather-fetcher:latest your-registry/yr-weather-fetcher:latest
docker push your-registry/yr-weather-fetcher:latest
  1. 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

Licence

MIT