用于python请求的tornado异步http/https客户端适配器

zymbit-trequests的Python项目详细描述


https://travis-ci.org/1stvamp/trequests.png?branch=master

用于python请求的tornado异步http/https客户端适配器。

问题

您喜欢使用Tornado来构建快速的无阻塞web应用程序,并且希望使用来自pypi的库来发出一些http请求,但是几乎每个开发人员及其狗都使用Requests来发出http请求(没错,因为它是awesome),但是请求不知道事件循环,也不能在套接字阻塞时产生,这意味着当您试图使用这样的库时,它开始阻塞您的请求处理,并且grud知道其他痛苦的世界。

解决方案

幸运的是有解决方案,其中之一就是使用greenlet模块在正确的时间包装阻塞操作和交换tornado协程,甚至还有方便的tornalet模块为您处理这个问题。

为了让生活更轻松,你们这些幸运的人,我创建了trequests,一个异步请求适配器,它使用greenlets(通过tornalet)和tornado中内置的非阻塞http客户机方法,对库(利用请求)进行任何非阻塞调用。

安装

$ pip install trequests

用法

# Assume bobs_big_data uses python-requests for HTTP requestsimportbobs_big_datafromtornado.webimportRequestHandlerfromtrequestsimportsetup_sessionfromtornaletimporttornalet# Tell requests to use our AsyncHTTPadapter for the default# session instance, you can also pass you own throughsetup_session()classWebHandler(RequestHandler):@tornaletdefget(self):data={'foo':'bar'}# This will now unblock the current coroutine, like magicresponse=bobs_big_data.BigData(data).post()returnself.write(response)

测试

要运行基本测试套件,请点击python setup.py test。

注意事项

trequests已用于大规模度量应用程序的生产中,是一个非常小且非常简单的模块。

但是我将其发布为0.9.x,主要是因为它缺少与请求适配器api的100%兼容性,最明显的是cookie jarsession支持,我将改进这种支持(或者如果您想添加支持,请向我发送一个pull请求)。当我有时间的时候以1.x分支的形式发布。

另外,目前setup_session实用程序实际上在请求中对session实用程序函数进行了monkey补丁,因为这是我看到的覆盖“默认”会话实例(例如,当没有提供会话时为每个调用创建的实例)上的装载的唯一方法。我希望将来能改变这种状况。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring data rest域驱动设计发布非聚合根实体   使用ContentValues提升整数列的值(Java、Android)   Google应用程序引擎(Java)+Spring管理的PersistenceManager   java如何使用JDT获取封闭方法节点?   java在字符串中首先计算负数运算   java Android如何在单击按钮时更改底部导航项的颜色   java理解Javafx运行时错误   swing Java创建笔刷笔划动作   java在非Netty客户端中从Netty服务器获取响应   java计数将参数传递给方法   java Android AIDL gen文件导致警告?   swing Java JFrame互动程序   scjp测试中的java正则表达式测试   Java中的桌面应用   java我可以使用spring security在cookies中存储完整的用户信息吗?记住我   java中棘手的方法重载   java忽略Mockito中的方法调用   java skipUntil和具有并发1的flatMap挂起在Reactor中   为什么我要关闭java。util。扫描仪变量?