docker-compose 中的 Airflow 服务主机无法更改时区

问题描述 投票:0回答:2

我想将气流的时区从 UTC 更改为我当前的时区(UTC+8 / 亚洲/澳门),并标记 DAG 将在澳门午夜运行而不是 UTC 午夜(因为在 UTC 午夜运行它会使数据创建时间总是在前一天而不是今天)

但是我尝试了很多方法还是不行,我尝试过:

更改airflow项目的DockerFile

# Airflow configurations
ENV AIRFLOW_HOME=/app/project/brownian
ENV AIRFLOW__CORE__LOAD_EXAMPLES=False
ENV AIRFLOW__CORE__LOGGING_LEVEL=DEBUG
ENV AIRFLOW__CORE__DAGS_FOLDER=/app/project/brownian/brownian/dags
ENV AIRFLOW__SCHEDULER__MIN_FILE_PROCESS_INTERVAL=60
ENV AIRFLOW__SCHEDULER__SCHEDULER_MAX_THREADS=3
ENV AIRFLOW__CORE__DEFAULT_TIMEZONE=Asia/Macau
ENV AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE=Asia/Macau

还尝试仅更改 DAG 时间 znoe

tz = pytz.timezone('Asia/Macau')


def localize_utc_tz(d):
    return tz.fromutc(d)

default_args = {
    "start_date":datetime(2020, 7, 20),
}

dag = DAG("scrap_sns", default_args=default_args, schedule_interval="@daily",
          user_defined_filters={
              'localtz': localize_utc_tz,
          })

但是它们都不起作用,气流中显示的时间仍然是 UTC,并且 DAG 仍然在 UTC 午夜运行,而不是我的午夜位置。

我可以尝试的方法吗?

或者另一方面,我只想让调度程序在 UTC+8 午夜运行,我可以更改代码/某些内容来实现此目标吗?

docker-compose airflow airflow-scheduler
2个回答
2
投票

您可以通过在 docker-compose.yml 文件的 &airflow-common-env 部分添加此环境“TZ: 'Asia/Tehran' ”来解决它:

version: '3'
x-airflow-common:
  &airflow-common
  build: .
  environment:
    &airflow-common-env
    TZ: 'Asia/Tehran'

它对我有用:)


0
投票

.env AIRFLOW__CORE__DEFAULT_TIMEZONE=亚洲/上海 AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE=亚洲/上海

Dockerfile 运行日期 ENV TZ=亚洲/上海 运行日期

它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.