如何强制气流任务失败?

时间:2017-03-30 07:43:08

标签: python airflow

我有一个python可调用process_csv_entries来处理csv文件条目。只有成功处理完所有条目后,我才希望我的任务成功完成。否则任务应该失败

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似乎都成功完成。 如何强制PythonOperator任务失败?

4 个答案:

答案 0 :(得分:17)

在遇到错误条件时引发异常(在您的情况下:当文件没有被解析时)

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

使用合适的消息提高相关错误类型

答案 1 :(得分:9)

是的,提高AirflowException,这将导致任务立即移至故障状态。

from airflow import AirflowException

ValueError可用于失败并重试。

答案 2 :(得分:1)

AirflowFailException现在可用于使任务无需重试即可失败

答案 3 :(得分:0)

如果您想在不重试的情况下使任务失败,请使用 AirflowFailException :-

示例:-

from airflow.exceptions import AirflowFailException
def task_to_fail():
    raise AirflowFailException("Our api key is bad!")

如果您正在寻找重试,请使用 AirflowException :-

示例:-

from airflow import AirflowException
def task_to_fail():
    raise AirflowException("Error msj")