未通过气流返回Symfony错误

chhkpiq4  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(66)

所以我的问题是:airflow,Since执行一个Python文件,该文件调用php脚本(Symfony)来执行一个创建的命令。该命令本身运行良好。后者在Airflow中的执行也非常好(通过Airflow的可视化显示:运行成功)。
当我在symfony命令(exit(1),throw,...)中引发错误,以查看Airflow的React时,它总是显示成功。
下面是python代码:

dag = DAG(
        'name fill python',
        default_args={
            'start_date': datetime(2022, 8, 1),
        },
        max_active_runs = 1,
        description='one description',
        schedule_interval='0 7 * * 1',
        tags = ["tag1", "tag2"]
)
t1 = SimpleHttpOperator(
    http_conn_id='name fill json',
    task_id='name task',
    endpoint='url route symfony',
    method='GET',
    data={},
    headers={},
    dag=dag
)
t1

Symfony命令的路由:

public function ImportMasse(string $csv, KernelInterface $kernel)
    {
        $application = new Application($kernel);
        $application->setAutoExit(false);

        $input = new ArrayInput([
            'command' => 'Import',
            'class_name' => $csv,
        ]);

        $output = new BufferedOutput();
        $application->run($input, $output);

        if(stristr($output->fetch(), '0 errors')){
             return new Response(true);
        }else{
             return new Response(false);
        }
    }

谢谢你回来。

eit6fx6z

eit6fx6z1#

SimpleHttpOperator可让您针对requests回应对象执行检查。如果检查传回false,则会引发AirflowException,运算子会失败。
示例:

def check_func(response):
    # Implement your check logic here
    if condition_is_ok:
        return True
    return False
    

SimpleHttpOperator(
    ...,
    response_check=lambda response: True if check_func(response) is True else False
)

相关问题