airflow - 每两周安排一次气流作业
问题描述
我有一个要求,我想每隔一个星期五安排一次气流作业。但是,问题是我无法弄清楚如何为此编写时间表。
我不想为此做多份工作。
我试过这个
'0 0 1-7,15-21 * 5
但是它不起作用,它每天从 1 点到 7 点和 15 点到 21 点运行。
从shubham的回答我意识到我们可以有一个可以为我们跳过任务的PythonOperator。我试图实施解决方案。然而似乎不起作用。
因为在 2 周内测试这个太难了。这就是我所做的。
- 我安排 DAG 每 5 分钟运行一次
- 但是,我正在编写 python 运算符 skip althernate 任务(非常类似于我正在尝试做的事情,交替星期五)。
DAG:
args = {
'owner': 'Gaurang Shah',
'retries': 0,
'start_date':airflow.utils.dates.days_ago(1),
}
dag = DAG(
dag_id='test_dag',
default_args=args,
catchup=False,
schedule_interval='*/5 * * * *',
max_active_runs=1
)
dummy_op = DummyOperator(task_id='dummy', dag=dag)
def _check_date(execution_date, **context):
min_date = datetime.now() - relativedelta(minutes=10)
print(context)
print(context.get("prev_execution_date"))
print(execution_date)
print(datetime.now())
print(min_date)
if execution_date > min_date:
raise AirflowSkipException(f"No data available on this execution_date ({execution_date}).")
check_date = PythonOperator(
task_id="check_if_min_date",
python_callable=_check_date,
provide_context=True,
dag=dag,
)
解决方案
根据您的实现,您可以使用哈希。使用 1.10 版在我的气流计划中工作:
哈希 (#) '#' 允许用于星期几字段,并且后面必须跟一个介于 1 和 5 之间的数字。它允许指定构造,例如给定月份的“第二个星期五”。 [19] 例如,在星期几字段中输入“5#3”对应于每个月的第三个星期五。参考
推荐阅读
- python-3.x - 查询前的Python3 psycopg2测试时间戳值
- javascript - JavaScript keyup 事件错误
- android - 当我们使用 Koin 依赖注入时,将密码设置为用户的房间加密
- python - Pandas Dataframes,计算行到行增量而不循环
- python - Python 请求 SSLCertVerificationError 的问题
- unity3d - Unity,在不同的场景中不断播放音乐
- docker - 如何将管理员 docker 容器与 mariadb docker 容器连接?
- reactjs - API 调用后的套接字事件未在 React 应用程序中正确记录数据
- node.js - Discord 机器人没有响应命令
- java - 运行单个 java 线程比 main 快?