我什么时候应该使用特定的气流运算符而不是 python 运算符?

When should I use a specific airflow operator over a python operator?

例如,如果我有一个 python 函数,它使用 sqlalchemy 创建一个 my_sql 引擎并将数据提取到 table,我将只创建一个 python运算符并将其连接到该可调用对象。

我宁愿使用 MySqlOperator 而不是将进程包含在 PythonOperator 中的原因是什么?优点是什么?缺点?

MySqlOperator 的设计让您只需提供 SQL:

drop_table_mysql_task = MySqlOperator(
    task_id='create_table_mysql', sql="""DROP TABLE table_name;""", dag=dag
)

接线员已经为您处理好一切。您不需要创建 mysql 引擎,甚至不知道 sqlalchemy 是什么。 PythonOperator 存在用于执行任意代码,创建自定义运算符没有意义。

是的 - 如果您愿意,您可以用 PythonOperator 做所有事情。

从您的描述来看,您似乎更喜欢编写脚本并使用 Airflow 安排它们。使 Airflow 成为一个类似 cron-job 的系统——这很琐碎,因为这意味着您没有利用该工具的强大功能。