Airflow apache启动时的空气流量变量

Airflow apache启动时的空气流量变量,airflow,Airflow,我正在学习气流,并计划设置一些变量,以便在不同的任务中使用。它们位于我的dags文件夹中,另存为configs.json,如下所示: { "vars": { "task1_args": { "something": "This is task 1" }, "task2_args": { "something": "t

我正在学习气流,并计划设置一些变量,以便在不同的任务中使用。它们位于我的dags文件夹中,另存为
configs.json
,如下所示:

{
  "vars": {
    "task1_args": {
      "something": "This is task 1"
    },
    "task2_args": {
      "something": "this is task 2"
    }
  }
}
我知道我们可以输入管理-->变量-->上传文件。但我有两个问题:

  • 如果我想在气流运行时调整一些变量,该怎么办?我可以很容易地调整我的代码,它会实时更新,但这似乎不适合变量
  • 有没有办法在启动时自动导入此特定文件?我不想每次测试我的项目时都要添加它

  • 我没有看到文档中提到过这一点,但这似乎是一件非常琐碎的事情。

    您想要的是


    这里有一个未经测试的片段应该会有所帮助

    from airflow.models import Variable
    
    Variable.set(key="my_key", value="my_value")
    
    • 因此,基本上您可以编写一个引导python脚本来为您进行此设置
    • 在我们的团队中,我们使用这些脚本来设置所有

    如果您想知道,下面是来自


    谢谢,但这并不完全是我想要的——我所说的编辑实际上是指打开json文件并手动编辑一两个变量。我想知道是否有一种方法可以(1)在我的airflow实例中显示这样的编辑,而无需手动重新加载变量UI;(2)在airflow启动时自动导入
    .json
    文件的内容。我可以轻松地调整我的代码并实时更新,但这似乎不适用于变量它适用于一切,包括
    变量
    s、
    s和
    连接
    s。请参阅答案,它描述了如何创建动态工作流,并使用编程的
    变量
    更新动态更改DAG的结构(即使在DAG运行时)
    
    @classmethod
    @provide_session
    def set(
        cls,
        key: str,
        value: Any,
        serialize_json: bool = False,
        session: Session = None
    ):
        """
        Sets a value for an Airflow Variable with a given Key
        :param key: Variable Key
        :param value: Value to set for the Variable
        :param serialize_json: Serialize the value to a JSON string
        :param session: SQL Alchemy Sessions
        """
    
        if serialize_json:
            stored_value = json.dumps(value, indent=2)
        else:
            stored_value = str(value)
    
        Variable.delete(key, session=session)
        session.add(Variable(key=key, val=stored_value))
        session.flush()