web-dev-qa-db-fra.com

paramètre de passage de flux d'air de cli

Existe-t-il un moyen de passer un paramètre à:

airflow trigger_dag dag_name {param}

?

J'ai un script qui surveille un répertoire pour les fichiers - quand un fichier se déplace dans le répertoire cible, je veux déclencher le dag en passant en paramètre le chemin du fichier.

14
bsd

vous pouvez le passer comme ceci:

airflow trigger_dag --conf {"file_variable": "/path/to/file"} dag_id

Ensuite, dans votre dag, vous pouvez accéder à cette variable en utilisant le modèle comme suit:

{{ dag_run.conf.file_variable }}

Si cela ne fonctionne pas, le partage d'une version simple de votre dag pourrait aider à obtenir de meilleures réponses.

13
Him

oui, vous pouvez. Votre Dag devrait avoir un Dag et une tâche Bask comme ceci:

from airflow.operators.bash_operators import BashOperator

args = {'start_date':datetime.now(),
        'owner':'airflow',}
dag = DAG(
      dag_id='param_dag', 
      default_args=args,
      schedule_interval=None)

bash_task=BashOperator(
     task_id="bash_task" 
     bash_command= 'bash ~/path/bashscript.sh {{ dag_run.conf["parameter"] if dag_run else "" }} ', 
    //bashscript your script you want to run and the dag_run.conf will hold the parameter you want to pass
     dag=dag)

Maintenant, sur votre ligne de commande, tapez simplement la commande:

 airflow trigger_dag dag_id --conf '{"parameter":"~/path" }'
11
Anmol Karki