首页 > 解决方案 > 气流在 SimpleHttpOperator 之间共享 cookie

问题描述

login_task = SimpleHttpOperator()
mutation_task = SimpleHttpOperator()

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

标签: pythoncookiesairflow

解决方案


只是有同样的问题。问题是,每次调用操作员时,操作员都会HttpHook.run()重新实例化一个新的。Session()

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

由于操作符返回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,那么开始Pod只是为了获取 cookie 是荒谬的......

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


推荐阅读