Python oauth2client异步
我正在与龙卷风和官方pythonoauth2client,gcloud作战。。。模块 这些模块接受用http=传递的备用http客户端,只要它有一个名为Python oauth2client异步,python,asynchronous,tornado,oauth2client,google-cloud-python,Python,Asynchronous,Tornado,Oauth2client,Google Cloud Python,我正在与龙卷风和官方pythonoauth2client,gcloud作战。。。模块 这些模块接受用http=传递的备用http客户端,只要它有一个名为request的方法,这些库中的任何一个都可以调用该方法,只要http请求必须发送到google和/或使用刷新令牌更新访问令牌 我创建了一个简单的类,它有一个self.client=AsyncHttpClient() 然后在其request方法中,返回self.client.fetch(…) 我的目标是能够产生这些库调用中的任何一个,这样torn
request
的方法,这些库中的任何一个都可以调用该方法,只要http请求必须发送到google和/或使用刷新令牌更新访问令牌
我创建了一个简单的类,它有一个self.client=AsyncHttpClient()
然后在其request
方法中,返回self.client.fetch(…)
我的目标是能够产生这些库调用中的任何一个,这样tornado将在中异步执行它们
问题是,它们高度依赖于设置为httplib2.Http()的默认客户端返回的内容:(响应,内容)
我真的被卡住了,找不到一个干净的方法使它异步
如果有人已经找到了方法,请帮助
提前感谢这些库不支持异步。移植过程并不总是容易的
oauth2client
取决于你想做什么,也许就足够了
gcloud
由于我不知道有任何Tornado/asyncio实现gcloud python
,因此您可以:
- 你可以自己写。同样,这不是简单的
连接的传输更改。http
或请求
,所有周围的东西都必须能够使用/产生未来/协同路由
- 将其包装在
ThreadPoolExecutor
(如@Apero所述)。这是一个高级API,因此该成品中的任何嵌套API调用都将在同一线程中执行(不使用池)。它可以很好地工作
- 外部应用程序(带有
ProcessPoolExecutor
或Popen
)
几年前,当我遇到AWS的类似问题时,我最终使用普通AsyncHTTPClient异步执行CLI(+一些CLI(基于awscli或boto))和简单案例(如S3,基本EC2操作)。这些库不支持异步。移植过程并不总是容易的
oauth2client
取决于你想做什么,也许就足够了
gcloud
由于我不知道有任何Tornado/asyncio实现gcloud python
,因此您可以:
- 你可以自己写。同样,这不是简单的
连接的传输更改。http
或请求
,所有周围的东西都必须能够使用/产生未来/协同路由
- 将其包装在
ThreadPoolExecutor
(如@Apero所述)。这是一个高级API,因此该成品中的任何嵌套API调用都将在同一线程中执行(不使用池)。它可以很好地工作
- 外部应用程序(带有
ProcessPoolExecutor
或Popen
)
几年前,当我遇到AWS的类似问题时,我最终以异步执行CLI(+一些CLI(基于awscli或boto))和简单案例(如S3,基本EC2操作)而告终使用纯AsyncHTTPClient。我已经成功地实现了反身份验证处理程序,并且正在将令牌存储到我的数据库中,并且正在设置一些安全cookie以了解用户是谁以及他的会话是否有效。我现在的问题是不必编写自己的异步方法来访问谷歌商店、谷歌驱动器、日历、电子邮件。。。但是,我已经成功地实现了反身份验证处理程序,并将令牌存储到了我的数据库中,并且设置了一些安全cookie,以了解用户是谁以及他的会话是否有效。我现在的问题是不必编写自己的异步方法来访问谷歌商店、谷歌驱动器、日历、电子邮件。。。但是有点黑客这些官方libs中真正阻止(http请求)的部分,我刚刚发现了这篇文章,也许我可以实现这一点:或者对libs进行一些猴子补丁,但我宁愿不要,我已经编辑了你的答案。当然你是对的,ThreadPoolExecutor是一个选项,它并不耗时,在高流量服务上扩展可能有点困难。我刚刚找到这篇文章,也许我可以实现这一点:或者对libs进行一些猴子补丁,但我宁愿不要我已经编辑了你的答案。当然,您是对的,ThreadPoolExecutor是一个选项,它并不耗时,在高流量服务上可能更难扩展。