tl; dr: Вы можете определить это с помощью DagRun.external_trigger
.
Я заметил, что в древовидном представлении есть план вокруг прогонов, которые запланированы, но не руководство. Это связано с тем, что к последнему приложено stroke-opacity: 0;
в CSS.
При поиске в репозитории я обнаружил, как Разработчики воздушного потока обнаруживают ручные запуски (5-летняя линия, поэтому должен работать в более старая версия):
.style("stroke-opacity", function(d) {return d.external_trigger ? "0": "1"})
Поиск external_trigger
приводит нас к DagRun
определению .
Так что, если вы используете, например, 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.