Указанное поведение может быть достигнуто путем введения задачи, которая вызывает задержку указанной длительности между вашими Task 1
и Task 2
Это может быть достигнуто с помощью PythonOperator
[ 1125]
import time
from airflow.operators.python_operator import PythonOperator
delay_python_task: PythonOperator = PythonOperator(task_id="delay_python_task",
dag=my_dag,
python_callable=lambda: time.sleep(300))
task_1 >> delay_python_task >> task_2
Или с использованием BashOperator
, а также
from airflow.operators.bash_operator import BashOperator
delay_bash_task: BashOperator = BashOperator(task_id="delay_bash_task",
dag=my_dag,
bash_command="sleep 5m")
task_1 >> delay_bash_task >> task_2
Примечание. Указанные фрагменты кода НЕ проверяются [ 1133]
Ссылки
example_python_operator.py
example_bash_operator.py
[1128] ]
ОБНОВЛЕНИЕ-1
Вот некоторые другие способы введения задержки
on_success_callback
/ [ 1130] on_failure_callback
: В зависимости от того, должен ли Task 2
выполняться при успехе или неудаче Task 1
, вы можете передать lambda: time.sleep(300)
в любой из этих параметров Task 1
post_execute()
: вызов time.sleep(300)
в post_execute()
[1131] или pre_execute()
[1132] Task 1
также будет иметь тот же эффект. Конечно, это будет включать изменение кода для вашего tasks
(1 или 2), поэтому лучше избегать его Лично я предпочел бы подход extra task
, потому что он делает вещи более явный и не преувеличивает время выполнения ваших Task 1
или Task 2
Поскольку синонимом является абстракция / альтернативное имя для уже существующего объекта базы данных, в случае таблицы поведение индекса идентично поведению базового объекта, т. Е. Когда создаются планы выполнения, один и тот же план создается независимо от использования Имя таблицы или соответствующий синоним.
Yes, synonyms can be used as an abstraction layer, or layer of indirection. For instance, if you need to access objects in an external database where the actual database name will not be known until runtime. You can write your sql referring to objects by synonym name, and then dynamically create the synonyms later.
There are no index gotchas: if the synonym refers to a table or indexed view, then whatever indexes are defined on those objects are in play.
Performance should be the same as explicitly referring to the object by fully-qualified name.
На самом деле, я столкнулся с ошибкой при использовании индексов .... Я не уверен, есть ли способ создавать похожие сообщения на этом сайте, но вот ссылка на мои проблема с синонимами и индексами таблиц.