Flusso d'aria: come ottenere tutte le date di esecuzione future

Aug 22 2020

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

1 MiguelTrejo Aug 22 2020 at 00:25

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 basecome ultima data di esecuzione del tuo dag ( dag.latest_execution_date). E puoi ottenerlo seguendo le esecuzioni chiamando n volte iter.get_next(datetime).

1 joebeeson Aug 22 2020 at 02:48

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)