Alimentazione di IRIS tramite script python
Il recupero viene gestito dal launcher che accetta in ingresso tre parametri
./launch_feed.sh arg1 arg2 arg3 arg4
arg1 minuto al quale esegue il comando
arg2 flag per recupero: R esegue il recupero, ogni altro carattere non esegue il recupero (es. N)
arg3 tempo in secondi tra una esecuzione e la successiva (facoltativo, default 3600)
arg4 in caso si voglia recuperare una data in particolare arg4 è "S"
Nel container sono già esplicitate le variabili d'ambiente di base:
IRIS_USER_ID postgres IRIS_DB_NAME iris_base IRIS_DB_HOST 10.10.0.19
Devono essere specificate le variabili:
DEBUG True scrive tutti gli errori o gli inserimenti dei dati, False scrive solo le informazioni essenziali TIPOLOGIE elenco delle tipologie per cui esegue l'alimentazione/recupero (vedi esempio) MINUTES numero di minuti che considera per il recupero o l'alimentazione diretta (vedi note) IRIS_USER_PWD password dell'utente IRIS_USER_ID NAME nome dell'autore dell'inserimento ID_RETE se non è settato di default prende le reti ARPA (1,2,4), altrimenti indicare le singole reti separate da virgola. Dove 3= lampo, 5= fuori regione, 6 in regione ma di altri enti ex. ID_RETE="1,2,6" considera rete Aria, CMG e Altro (Consorzi, CGP, ETV...)
docker run -d --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e "IRIS_USER_ID=postgres" -e "IRIS_USER_PWD=<password>" -e "IRIS_DB_NAME=iris_base" -e "IRIS_DB_HOST=10.10.0.19" -e "TIPOLOGIE=I PP T UR N RG PA VV DV" -e "DEBUG=True" -e "MINUTES=1440" --name "recupero_all" arpasmr/feed_iris ./launch_feed.sh 8 R 3600
L'uso combinato di MINUTES e arg1 determina il comportamento dell'alimentazione/recupero. In particolare, nel caso dell'alimentazione diretta si suppone che non vi siano dati nel dB e quindi la query di inserimento fallisce solo se qualcun altro ha già inserito un valore (violazione della chiave primaria). In pratica, il funzionamento prevede che MINUTES sia 0 e che l'alimentazione avvenga al minuto arg1.
Ovviamente, se arg1 è troppo vicino al momento in cui le stazioni inviano i dati, l'interrogazione al remws riporterà "Dato non presente" e quindi non verrà fatto alcun inserimento.
Se voglio usare arg1 vicino a 0, il valore di °MINUTES* dovrà essere 10 o maggiore, in modo che venga chiesto il dato presente nel REM con marca temporale più vecchia di MINUTES minuti fa.
Se MINUTES è 0 per ottenere il pacchetto dei 10 minuti correnti conviene porre arg1 pari a 6-8.
L'esecuzione di un'alimentazione ritardata (MINUTES>>0) può essere conveniente nel caso di sensori che sono sistematicamente in ritardo (es. sensori RRQA). In questo caso conviene impostare un recupero (arg2=R che peschi alcuni MINUTES minuti fa (es. 30) e che venga lanciato ogni 10 minuti (ponendo arg3 pari a 600).
Per il recupero il valore di MINUTES deve essere 1440 (per recuperare i dati delle 24h precedenti) mentre arg1 può essere un valore qualunque.
Nel caso del recupero di 24h il valore di arg3 (intervallo tra un'esecuzione e la successiva) va posto pari ad almeno 3600 secondi (che è il valore di default e può essere omesso)
L'alimentazione diretta cerca il dato dall'ora solare all'indietro di MINUTES minuti.
Il recupero cerca tutti i dati dall'ora UTC all'indietro di MINUTES minuti
Content type
Image
Digest
Size
475.1 MB
Last updated
over 5 years ago
docker pull mauromussin/feed_iris