【问题标题】:Airflow share cookies between SimpleHttpOperator气流在 SimpleHttpOperator 之间共享 cookie
【发布时间】:2023-03-28 14:58:01
【问题描述】:
login_task = SimpleHttpOperator()
mutation_task = SimpleHttpOperator()

login_task 设置 cookie。如何与mutation_task 共享此 cookie?

【问题讨论】:

    标签: python cookies airflow


    【解决方案1】:

    刚刚遇到同样的问题。问题是运算符调用的HttpHook.run() 每次调用运算符时都会重新实例化一个新的Session()。

    我正要编写一个自定义钩子/运算符,但发现SimpleHttpOperator 在run() 中将**kwargs 传递给prepare.Request()。

    由于操作符返回的是response对象,所以解决方法很简单:

    # save only the cookies returned to XCom
    login_task= SimpleHttpOperator(
        ...,
        response_filter=lambda response: response.cookies
    )
    
    # run multiple related tasks but before the cookie expires
    mutation_task = SimpleHttpOperator(
        ...,
        cookies={{ ti.xcom_pull(task_ids="login_task") }}
    )
    

    目前这对我有用,但这远非理想,因为您可能需要经常刷新 cookie,因此需要执行更多任务。另外,如果你使用KubernetesExecutor,那么仅仅为了获取cookie而启动Pod是荒谬的......

    作为参考,操作符和钩子的源代码: https://airflow.apache.org/docs/apache-airflow-providers-http/stable/_api/airflow/providers/http/index.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2013-07-20
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多