#python #airflow
#python #поток воздуха
Вопрос:
Как я могу настроить свою базу данных для запуска два раза в день (или n раз) ежедневно, и, если возможно, с некоторым требуемым буфером времени между запусками (например, каждый запуск должен выполняться не менее чем через 6 часов после последнего запуска dag).
Я знаю, что на абстрактном уровне мне может понадобиться сделать что-то вроде этого:
import random
schedule=f"{random.randint(0,59)} {random.randint(0,24)} * * *"
Я просто не знаю, как обеспечить выполнение требования дважды в день (или временного буфера)?
Ответ №1:
1. n запусков в день
schedule_interval
может бытьtimedelta
объектом; ссылка на строку документа
: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. Этот интервал просто необходимо удерживать при последовательных запусках, если это возможно