Flusso d'aria: come ottenere tutte le date di esecuzione future
Sto lavorando alla pianificazione di un lavoro di flusso d'aria. Tuttavia, per verificare se ho pianificato il lavoro corretto, ho bisogno di vedere quando verrà eseguito in futuro.
Il flusso d'aria ha il seguente comando che mi dà la prossima corsa. tuttavia, ciò non è sufficiente per alcuni casi d'uso. ad esempio, ho pianificato l'esecuzione di un lavoro ogni venerdì. Come lo verifico.
airflow next_execution <dag_id>
C'è un modo, posso ottenere tutte le date future in cui verrà eseguito questo dag. o almeno un paio di?
Risposte
Airflow utilizza sotto il croniter hook, per un esempio . Seguendo l'esempio sulla documentazione del croniter , questo potrebbe funzionare come segue (ad esempio, si consideri che il dag gira alle 12 di ogni venerdì e che la nostra data di base è ieri 20 agosto).
from croniter import croniter
from datetime import datetime
# Specify current date
base = datetime(2020, 8, 20, 0, 0)
# Set croniter
iter = croniter('0 12 * * 5', base)
# Get next execution
iter.get_next(datetime)
>>>
datetime.datetime(2020, 8, 21, 12, 0)
dove puoi specificare base
come ultima data di esecuzione del tuo dag ( dag.latest_execution_date
). E puoi ottenerlo seguendo le esecuzioni chiamando n volte iter.get_next(datetime)
.
Sebbene la maggior parte dei processi utilizzi croniter
, se hai accesso alla tua installazione è sempre meglio ottenere le informazioni dalla "fonte" tramite le interfacce esistenti:
from airflow import models
from datetime import datetime, timedelta
dag_bag = models.DagBag()
dag_id = "dag_name"
dag = dag_bag.get_dag(dag_id)
now = datetime.now()
until = now + timedelta(days=21)
runs = dag.get_run_dates(start_date=now, end_date=until)
print(runs)