首页 > 解决方案 > Airflow Variable.set() 违反唯一键约束

问题描述

我目前在尝试使用 Apache Airflow 的变量模型作为键/值存储来管理气流作业期间的某些状态时遇到了问题。

在我工作中的一项任务中,我设置了一个键,例如:

Variable.set("{table_name}_last_run", "2020-04-16")

稍后,我尝试用新值覆盖这个变量(对于同一个键)。当我这样做时,气流会呕吐并引发如下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1246, in _execute_context
    cursor, statement, parameters, context
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 588, in do_execute
    cursor.execute(statement, parameters)
psycopg2.IntegrityError: duplicate key value violates unique constraint "variable_key_key"
DETAIL:  Key (key)=(currency_last_run) already exists.

这对我来说没有意义。根据气流的文档,您似乎可以像使用任何其他键/值存储一样使用变量——但似乎我无法使用 set() 函数覆盖预先存在的键。

我是否遗漏了某些东西或以意外的方式使用了变量?

标签: pythonairflow

解决方案


推荐阅读