如何在Airflow中的函数内使用宏

时间:2019-05-14 15:58:39

标签: airflow

我正在尝试使用dag_id,task_id和execution_date的组合来计算气流中每个任务的哈希值。我正在使用自定义运算符的 init 进行计算,以便可以使用它为每个任务计算唯一的retry_delay(我不想使用指数补偿)

我发现很难在对哈希函数或int函数的调用中使用{{execution_date}}宏,在这种情况下,airflow不会替换特定日期(仅保留字符串{{execution_date}},我得到所有执行日期都一样

self.task_hash = int(hashlib.sha1("{}#{}#{}".format(self.dag_id,
                                                    self.task_id,
                                                    '{{execution_date}}')
                                       .encode('utf-8')).hexdigest(), 16)

我已经将task_hash放在template_fields中,我也试图在自定义宏中进行计算-这适用于哈希部分,但是当我将其放在int()中时,这是同样的问题

任何工作周期,还是我可以(不是在宏中)检索执行日期(在操作符的初始位置)?

谢谢

1 个答案:

答案 0 :(得分:0)

尝试:

self.task_hash = int(hashlib.sha1("{}#{}#{{execution_date}}".format(
    self.dag_id, self.task_id).encode('utf-8')).hexdigest(), 16)