Sono davvero un principiante in questo forum. Ma ho giocato con il flusso d'aria, per qualche tempo, per la nostra azienda. Scusa se questa domanda sembra davvero stupida.execution_date in airflow: necessario accedere come variabile
Sto scrivendo una pipeline usando un gruppo di BashOperators. In sostanza, per ogni attività, voglio chiamare semplicemente un'API REST utilizzando 'ricciolo'
Questo è ciò che la mia condotta assomiglia (versione molto semplificata):
from airflow import DAG
from airflow.operators import BashOperator, PythonOperator
from dateutil import tz
import datetime
datetime_obj = datetime.datetime
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime.datetime.combine(datetime_obj.today() - datetime.timedelta(1), datetime_obj.min.time()),
'email': ['[email protected]'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 2,
'retry_delay': datetime.timedelta(minutes=5),
}
current_datetime = datetime_obj.now(tz=tz.tzlocal())
dag = DAG(
'test_run', default_args=default_args, schedule_interval=datetime.timedelta(minutes=60))
curl_cmd='curl -XPOST "'+hostname+':8000/run?st='+current_datetime +'"'
t1 = BashOperator(
task_id='rest-api-1',
bash_command=curl_cmd,
dag=dag)
Se si nota che sto facendo current_datetime= datetime_obj.now(tz=tz.tzlocal())
Invece quello che voglio qui è 'execution_date'
Come faccio a usare 'execution_date' direttamente e assegnarlo a una variabile i n il mio file python?
Ho riscontrato questo problema generale di accesso a args. Qualsiasi aiuto sarà sinceramente apprezzato.
Grazie
Grazie. Con questo approccio, avrò un task t1, che sarà un'istanza di PythonOperator con provide_context = true, che mi permette di usare kwargs ['execution_date'] dove imposterò e restituirò current_datetime = 'execution_date'. Quindi creo il mio compito t2: BashOperator: in cui eseguirò il pull (usando XCOM) e utilizzo le mie variabili. Quindi, vedi, devo creare 2 compiti. che non è molto sexy;) Sono sicuro (e spero di aver ragione) che c'è un modo per accedere a 'execution_date' direttamente nel codice python senza usare PythonOperator. Ma non sono in grado di capire come farlo :( – Roger
questo approccio lo ha risolto per me! – Nico