我想将气流的时区从 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.yml 文件的 &airflow-common-env 部分添加此环境“TZ: 'Asia/Tehran' ”来解决它:
version: '3'
x-airflow-common:
&airflow-common
build: .
environment:
&airflow-common-env
TZ: 'Asia/Tehran'
它对我有用:)
.env AIRFLOW__CORE__DEFAULT_TIMEZONE=亚洲/上海 AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE=亚洲/上海
Dockerfile 运行日期 ENV TZ=亚洲/上海 运行日期
它对我有用