web-dev-qa-db-fra.com

Comment forcer une tâche sur le flux d'air à échouer?

J'ai un python appelable process_csv_entries qui traite les entrées du fichier csv. Je veux que ma tâche se termine avec succès uniquement si toutes les entrées ont été traitées avec succès. Sinon, la tâche devrait échouer

def process_csv_entries(csv_file):
    # Boolean 
    file_completely_parsed = <call_to_module_to_parse_csv>
    return not file_completely_parsed

CSV_FILE=<Sets path to csv file>
t1 = PythonOperator(dag=dag,
                      task_id='parse_csv_completely',
                      python_operator=process_csv_entries,
                      op_args=[CSV_FILE])

t1 semble se terminer avec succès quelle que soit la valeur renvoyée. Comment forcer l'échec de la tâche PythonOperator?

17
Mask

déclencher une exception lorsque vous remplissez la condition d'erreur (dans votre cas: lorsque le fichier n'est pas analysé avec succès)

raise ValueError('File not parsed completely/correctly')

augmenter le type d'erreur pertinent avec un message approprié

22
Priyank Mehta

Oui, augmentez AirflowException, la tâche passera immédiatement à l'état d'échec.

from airflow import AirflowException

ValueError peut être utilisé pour échouer et réessayer.

13
Alon Rolnik