我如何将它转换成一个‘美国/纽约’时区感知气流DAG,它将以同样的方式运行?
我在前面问了一个关于Airflow中的时区感知DAG的问题,但在答案或Airflow文档中,我不清楚如何从具有start_date
和tzinfo
的schedule_interval
的DAG跳转,该DAG模仿cronjob。
我目前正尝试将DAG与my_dag.py
文件一起使用,如下所示:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
import pendulum
local_tz = pendulum.timezone("America/New_York")
default_args=dict(
owner = 'airflow',
start_date=datetime(2018, 11, 7, 13, 5, tzinfo=local_tz), # 1:05 PM on Nov 7
schedule_interval=timedelta(hours=1),
)
dag = DAG('my_test_dag', catchup=False, default_args=default_args)
op = BashOperator(
task_id='my_test_dag',
bash_command="bash -i /home/user/shell_script.sh",
dag=dag
)
气流支持使用cron表达式。schedule_interval被定义为一个DAG参数,并且最好接收一个作为str或DateTime.TimeDelta对象的cron表达式。或者,您也可以使用这些cron“预置”中的一个:none、@once、@hourly、@daily、@weekly、@monly、@yearly。
正如我所看到的,时区意识是正确的,但计划间隔应该改变。
args=dict(
owner = 'airflow',
start_date=datetime(2018, 11, 7, 13, 5, tzinfo=local_tz), # 1:05 PM on Nov 7
)
dag=DAG(dag="dagname_here",
default_args=args,
schedule_interval='05 */1 * * 1-5' #should be string)
注意:请注意,如果您在一天的schedule_interval上运行DAG,标记为2016-01-01的运行将在2016-01-01T23:59之后很快触发。换句话说,一旦作业实例所涵盖的期间结束,它就会启动。
问题内容: 有人可以告诉我,以下两个语句有什么区别: 和 换句话说,为什么EST与America / New_York不同。同样在我的应用程序中,要使用美国当前时区,我应该使用America / New_York还是EST。 问题答案: EST实际上是纽约时区的 一半 。它 始终 处于标准时间-没有夏令时。IMO本身并不是一个正确的时区,它 是 整个时区的“标准”部分。当写的时区 只是 一个固定的
问题内容: 从服务器收到的日期为时区,我需要将其转换为特定时区,例如:。以下是相同的代码 但是这样做时出现以下错误: 但是是一个已知的时区,但仍然要求我添加时区。 问题答案: 您需要加载以下所有内容: 时刻 时区 moment-timezone的时区 数据 角矩 在moment-timezone主页上,提供了三种不同的moment- timezone分布。 是 只是 脚本。它不包含任何时区数据。如
问题内容: 我有两个表要合并。第一个表与客户一起使用,另一个表与产品一起使用。目前,我有22种产品,但我希望有一个灵活的数据库设计,因此与其在产品数据库中没有22列,我为每个客户为每个产品提供1行,所以如果我总体上添加或删除1种产品,我不会必须更改数据库结构。 我想有一条select语句,在这里我为每个客户端选择所有产品,并且输出应该在一行中,每个产品都有一列。 我看到了其他一些类似的问题,但这样
问题内容: 我需要将日期转换为2012-10-15 15:00:21.970的格式 前往欧洲:15/10/2012 15:00:21 前往美国:2012年10月15日下午03:00:21 我无法弄清楚美国转换的时间部分。我可能可以用DATEPART做到这一点,但是此函数将在select语句中格式化时间,因此我试图使其尽可能简单。有任何想法吗? 资源:http://www.w3schools.com
问题内容: 我正在尝试将整数形式的分钟转换为postgres中的间隔 是他们的任何功能将帮助我将其转换为间隔还是我应该将其除以60并获得最终结果 问题答案: 最快的方法是 所以看起来像这样(@Teddy建议) 或者, 并不是说这是最干净的,如果速度不是问题,我更喜欢提到的方法@a_horse_with_no_name
问题内容: 假设您有一个气流DAG,它对回填没有意义,这意味着在运行一次之后,快速运行后续时间将完全没有意义。 例如,如果您要从仅每小时更新一次的某个源中加载数据,则快速连续进行的回填将一次又一次地导入相同的数据。 当您实例化一个新的每小时任务时,这特别令人讨厌,并且在它开始以指定的时间间隔运行之前,它为错过的每个小时运行了一定的时间,进行了多余的工作。 我能想到的唯一解决方案是他们在文档的FAQ