gpt4 book ai didi

Python oauth2client 异步

转载 作者:行者123 更新时间:2023-12-01 04:03:54 24 4
gpt4 key购买 nike

我正在与tornado和官方python oauth2clientgcloud...模块进行斗争。

这些模块接受通过 http= 传递的备用 http 客户端,只要它有一个名为 request 的方法,无论何时,任何这些库都可以调用该方法。必须将 http 请求发送到 Google 和/或使用刷新 token 更新访问 token 。

我创建了一个简单的类,其中有一个 self.client = AsyncHttpClient()然后在其 request 方法中,返回 self.client.fetch(...)

我的目标是能够产生任何这些库调用,以便tornado能够异步执行它们。

问题是它们高度依赖于默认客户端设置为 httplib2.Http() 返回的内容:(响应,内容)

我真的陷入困境,无法找到一种干净的方法来实现异步

如果有人已经找到方法,请帮忙。

提前谢谢

最佳答案

这些库不支持异步。移植过程并不总是那么容易。

oauth2client

取决于你想做什么,也许 Tornado's GoogleOAuth2Mixintornado-alf就足够了。

gcloud

由于我不知道 gcloud-python 有任何 Tornado/asyncio 实现,因此您可以:

  • 你可以自己写。同样,这不是 Connection.httprequest 的简单传输更改,周围的所有内容都必须能够使用/产生 future /协程。

  • 将其包装在ThreadPoolExecutor中(正如@Apero提到的)。这是高级 API,因此该 yield 中的任何嵌套 api 调用都将在同一线程中执行(不使用池)。它可以很好地工作。

  • 外部应用(使用 ProcessPoolExecutorPopen)。

几年前,当我在 AWS 上遇到类似问题时,我最终以异步方式执行 CLI(Tornado + subprocess.Popen + 一些 cli(awscli 或基于 boto))和简单案例(例如 S3、基本 EC2 操作) )与普通的 AsyncHTTPClient。

关于Python oauth2client 异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com