python - Airflow 运算符(operator)是否需要返回任何内容才能正常运行?

标签 python airflow

在 Airflow 中,如果我创建一个自定义运算符类,并在 dag 中使用它,它实际上必须返回任何内容吗?

举几个例子,假设我创建了传感器运算符(继承自 base_sensor_operator),它每 5 分钟检查一次某处是否存在文件。与 check_for_wildcard_key() 及其返回 True 或 False 的方式类似。我创建的任何方法实际上都必须有一个包含此 True/False 值的 return 语句才能正常运行吗?调度程序是否知道在没有返回语句的情况下重试此任务?

另一个示例是,如果我创建一个自定义运算符(非传感器),该运算符在不常见的数据库中执行 SQL 代码,那么我需要创建自己的运算符来连接到该数据库。假设我在自定义运算符类中使用 execute_SQL() 方法。我不需要有返回值,对吗?由于 dag 文件内的运算符对象本身只会“运行”,因此我不需要返回任何内容?

我知道有时我们会使用 xcom_pushxcom_pull,因此如果我们需要在任务之间发送/接收结果,那么最好有返回值。即使某些东西可能不会被使用,也将其归还是良好的做法吗?自定义运算符类可以在没有 return 语句的情况下工作吗?

最佳答案

不,Operator 类不需要返回任何内容。实际上操作符的主要功能是execute方法,并且大多数操作符不返回任何内容。示例:BranchPythonOperatorTriggerDagRunOperatorDatabricksRunNowOperator 等。它们只是完成工作。

另一方面,传感器的 poke 方法需要返回 TrueFalse,因为 execute BaseSensorOperator 的方法调用 self.poke 方法,并根据返回值采取操作。

关于python - Airflow 运算符(operator)是否需要返回任何内容才能正常运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62791606/

相关文章:

python - 聚焦时不要设置 Gtk.TreeView 的选择?

python - 如何使用 Python/pyodbc 将数据推送到 Google Sheets?

dst - 如何正确处理Apache Airflow中的夏令时?

google-cloud-platform - 我可以重新启动 Cloud Composer 环境吗?

python - Django 教程应用程序,第 2 部分。为什么缺少 - 在 makemigrations 命令后添加字段问题到选择?

python - 无法在 python scrapy 中运行扩展

python - 来自 Airflow 数据库 Hook 的 SQLAlchemy 引擎

apache-spark - SPARK应用程序+ HDFS +用户 Airflow 不是inode = alapati的所有者

amazon-s3 - 使用 Airflow 将数据从 Redshift 卸载到 S3

python - 在 Python 中拟合具有固定协方差的高斯混合