tl;dr:您可以通过以下方式确定这一点DagRun.external_trigger
.
我注意到在树视图中,有一个关于计划运行的轮廓,但不是手动运行。那是因为后者有stroke-opacity: 0;
应用在CSS中。
在仓库中搜索这个,我发现了如何气流开发人员检测手动运行 https://github.com/apache/airflow/blob/6ba672eaab84fd71dc8a6f2dd5791651e5a96c38/airflow/www/templates/airflow/tree.html#L338(5 年的老行,所以也应该在旧版本中工作):
.style("stroke-opacity", function(d) {return d.external_trigger ? "0": "1"})
正在寻找external_trigger
带我们到DagRun定义 https://github.com/apache/airflow/blob/dd9f04e152997b7cff56920cb73c1e5b710a6f9d/airflow/models/dagrun.py#L56.
因此,例如,如果您使用的是 Python 回调,则可以有类似这样的内容(可以在 DAG 或单独的文件中定义):
def my_fun(context):
if context.get('dag_run').external_trigger:
print('manual run')
else:
print('scheduled run')
并在你的Operator
设置参数如下:
t1 = BashOperator(
task_id='print_date',
bash_command='date',
on_failure_callback=my_fun,
dag=dag,
)
我已经测试过类似的东西并且它有效。
我想你也可以做类似的事情if {{ dag_run.external_trigger }}:
- 但我还没有测试过这个,我相信它只适用于该 DAG 的文件。