Airflow任务调度依赖容器时间还是宿主机时间?DAG时区咨询
Airflow容器部署的时区与调度时间基准问题
问题场景
本地宿主机执行date命令返回:Wed Nov 22 18:36:44 EST 2023
Airflow所在Docker容器内执行date命令返回:Wed 22 Nov 2023 11:36:44 PM UTC
DAG定义代码如下:
with DAG("forex_data_pipeline", start_date=datetime(2024, 1 ,1), schedule_interval="@daily", catchup=False) as dag: ...
疑问
- Airflow任务调度是基于容器时间还是宿主机系统时间?
- 上述DAG定义的
start_date是基于UTC还是EST时区?
回答
Airflow任务调度完全基于容器内的系统时间
Airflow的核心组件(调度器Scheduler、Web服务器Webserver、元数据库等)均运行在Docker容器内部,任务调度逻辑由容器内的Scheduler进程驱动,因此时间基准完全遵循容器的系统时间,与宿主机时间无关。DAG定义中的
start_date是基于UTC时区
代码里使用的datetime(2024, 1, 1)未指定时区信息,属于「朴素datetime对象」。Airflow默认时区为UTC,在没有显式指定时区的情况下,会自动将该朴素datetime解析为UTC时间。若需使用EST等其他时区,需在创建datetime对象时显式指定时区,或修改Airflow的全局时区配置。
内容的提问来源于stack exchange,提问作者Amin Ba
相关产品推荐
相关产品推荐

