【发布时间】:2026-01-31 19:25:02
【问题描述】:
我在 Airflow 2.1.4 上,我正在尝试修改自定义传感器以充当 Smart Sensor。
除其他外,要允许自定义传感器作为智能传感器工作,您需要为其提供poke_context_fields 类变量。这没有很好的记录,但我认为它只是__init__ 的参数列表,当智能传感器 DAG/Shard 调用它时,您也希望将其传递给self.poke()(尽管我可能是错的)。
所以我有这样的:
poke_context_fields = ['myarg1', 'myarg2']
我已经对此进行了测试,但似乎存在问题:当智能传感器 DAG 调用 self.poke() 时,它会按预期转发这些参数,但它确实 NOT 给了我常规我的poke 方法所期望的context 变量。不幸的是,如果不访问该变量,我的代码将无法工作,因为它需要某些属性,例如 context['ds']、context['task_instance'] 等,这些属性仅在执行时可用,而不是在 Python 解析类变量时可用。
我已阅读以下内容 (https://github.com/apache/airflow/issues/11893),但我并未 100% 关注。是否有解决此问题的方法,或者我是否应该得出结论,我不能使用智能传感器,应该等待使用 2.2.0 中发布的可延迟运算符?
【问题讨论】:
-
我不会为此付出努力,因为智能传感器已被弃用 github.com/apache/airflow/pull/20151 - 您应该使用可延迟运算符
标签: airflow airflow-2.x