Python: планирование базы данных Airflow для случайного запуска дважды (n раз) в день?

#python #airflow

#python #поток воздуха

Вопрос:

Как я могу настроить свою базу данных для запуска два раза в день (или n раз) ежедневно, и, если возможно, с некоторым требуемым буфером времени между запусками (например, каждый запуск должен выполняться не менее чем через 6 часов после последнего запуска dag).

Я знаю, что на абстрактном уровне мне может понадобиться сделать что-то вроде этого:

 import random
 
schedule=f"{random.randint(0,59)} {random.randint(0,24)} * * *"
  

Я просто не знаю, как обеспечить выполнение требования дважды в день (или временного буфера)?

Ответ №1:

1. n запусков в день

 :param schedule_interval: Defines how often that DAG runs, this
        timedelta object gets added to your latest task instance's
        execution_date to figure out the next schedule
:type schedule_interval: datetime.timedelta or
        dateutil.relativedelta.relativedelta or str that acts as a cron
        expression
  
  • Итак, с 1440 минутами в день и «n» запусками вы можете поместить schedule_interval=datetime.timedelta(minutes=(1440/n))

2. Рандомизация

  • бит рандомизации неясен;
    • с ‘n’ запусками в день, как вы хотите рандомизировать рандомизацию?

Комментарии:

1. Под рандомизацией я просто подразумеваю, что я хочу запускать базу данных дважды в день, но должны ли эти времена выполнения быть случайными (не жестко запрограммированными)

2. но с определенным минимальным промежутком (временным интервалом) между последовательными запусками, верно? Этот интервал должен быть принудительно применен для всех запусков в течение одного дня (ч / б 00:00 часов и 23:59 часов) или он также должен выполняться для последовательных запусков, охватывающих две даты?

3. Этот интервал просто необходимо удерживать при последовательных запусках, если это возможно