我正在尝试使用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()中时,这是同样的问题
任何工作周期,还是我可以(不是在宏中)检索执行日期(在操作符的初始位置)?
谢谢
答案 0 :(得分:0)
尝试:
self.task_hash = int(hashlib.sha1("{}#{}#{{execution_date}}".format(
self.dag_id, self.task_id).encode('utf-8')).hexdigest(), 16)