为什么TimeSensor运算符给我这个错误

时间:2019-10-08 15:06:50

标签: python airflow google-cloud-composer

气流TimeDeltaSensor因操作数类型不受支持而失败

我在“ Google Cloud Composer” 上使用了 Airflow ,并且我需要从“ FaceBook Ads”中获取不同帐户的数据,因此需要稍加延迟两次通话之间的秒数。 我尝试使用 TimeDeltaSensor ,但是在dag链中插入此运算符的调用时,错误地发送了代码。

这是我的爸爸:

dag_start_date = get_yesterday(at_midnight=True)
dag_args = get_dag_args(FLOW, dag_name, dag_start_date=dag_start_date)
with DAG(dag_id=dag_name, default_args=dag_args, start_date=dag_start_date, schedule_interval='@once') as dag:
    worker = FacebookAdsToBigQuery(FLOW, dag)
    end_date = dag_start_date
    start_date = end_date - timedelta(days=3)
    worker.run_dag(start_date, end_date)

这是有关TimeDeltaSensor的代码:

....
        for level in FacebookAdsToBigQuery.LEVELS:
            table_schema_fname = self.level_table_schema_file[level]
            schema_fields = bb_utils.load_json_file(table_schema_fname)
            for j, account_id in enumerate(self.account_ids):
                tsk_prefix = f"{self.dag.dag_id}_{account_id}_{level}"
                delta = j * 10
                if delta > 0:
                    wait_x_nextact_tsk = TimeDeltaSensor(task_id=f'{tsk_prefix}_wait_{delta}',
                                                         delta=timedelta(seconds=delta), dag=self.dag)
                else:
                    wait_x_nextact_tsk = DummyOperator(task_id=f'{tsk_prefix}_nowait', dag=self.dag)

....

这是错误:

  

[2019-10-08 11:18:25,547] {base_task_runner.py:101}信息-工作199692:子任务facebook_ads_233070883986464_ad_wait_40 [2019-10-08 11:18:25,546] {cli.py:520}信息-在主机airflow-worker-5fd4678587-l6nlf上运行

     

[2019-10-08 11:18:25,642] {models.py:1796}错误-+ =不支持的操作数类型:'NoneType'和'datetime.timedelta'

原因可能是操作员无法理解dag参数 schedule_interval ='@ once'

谢谢

0 个答案:

没有答案