python - 气流在 SimpleHttpOperator 之间共享 cookie
问题描述
login_task = SimpleHttpOperator()
mutation_task = SimpleHttpOperator()
login_task
设置 cookie 。如何与 cookie 共享此 cookie mutation_task
?
解决方案
只是有同样的问题。问题是,每次调用操作员时,操作员都会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
推荐阅读
- python - Numpy genfromtxt 在每行中跳过前导空格
- kubernetes - Istio 的最小 Google Kubernetes Engine 集群大小/配置是多少?
- maven - 如何指定ejb和war的部署顺序部署在耳内?
- r - 一元运算符的无效参数 - 错误消息 - 否定 dplyr:: 使用向量选择
- javascript - 单击切换按钮时不出现弹出模式
- amazon-web-services - 如果我从 RDS 请求数据,AWS 会在可用区之间传输数据吗?
- javascript - 使用 Vue 单击并编辑文本输入
- c# - 每个功能的 serilog 多个实例
- r - 生存分析 - 中位总体生存
- c - 打印子进程的退出顺序