例如,我想每天安排一次故障,例如:
我该如何实现?
答案 0 :(得分:2)
如何添加一个延迟步骤(具有随机睡眠间隔),并在实际做某事之前安排它?
例如
def _delay_dag():
import random
import time
delay_by = random.randint(0,60*60*6) #e.g. to delay up to 6h from schedule time
print(f'Delaying start by {delay_by} seconds..')
time.sleep(delay_by)
return True
def _do_something(ti, *kwargs):
pass
with DAG('my_DAG_with_random_start',
schedule_interval='@daily',
tags=['test','random_start'],
default_args=default_args) as dag:
delay_dag = PythonOperator(
task_id = 'delay_dag',
python_callable=_delay_dag
)
do_something = PythonOperator(
task_id = 'do_something',
provide_context=True,
python_callable=_do_something
)
delay_dag >> do_something
答案 1 :(得分:1)
如果您希望每天随机安排一次dag,请编写python帮助程序代码。 在定义dag之前,在dag代码中,放入种子随机数(随日期变化),以创建伪随机数。
在此示例中,我将完整日期转换为数字日期,但是您可以使用任何喜欢的方法。
类似下面的代码应该可以工作。
random.seed(int(datetime.date.today().strftime('%Y%m%d')))
randomCronString="* {} * * *".format(random.randint(0,24))
dag=Dag('TestDag,schedule_interval=randomCronString,default_args=args, catchup=False)