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

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)

注意事项

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

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

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

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

推荐PyPI第三方库


热门话题
相当于加密流。NET在Java 安卓中的应用?   java Android:加载片段时启动动画   java文件从指定的绝对路径上载到服务器   java是否可以自定义Spring缓存抽象所使用的序列化?   当客户端输入为无效字符串时,java从JAXWS接收空的BigDecimal   将数据库从MySQL更改为SQLite后出现Java项目错误   java PrimeFaces在datatable中自定义行编辑器   java在数组中对字符串和双类类型进行排序   图像Java:如何在GridLayout中嵌套JPanel?   java searchByEmail方法不起作用   java运行时。exec(字符串)限制字符串   java通过异步运行lambda访问方法参数   java为什么这个条件语句不编译?   在javajar中添加和使用文件,就像它们在文件夹中一样   使用java查找带有正则表达式的子字符串   在awt所在的地方荡秋千。属性,以及如何在Java插件中提供它的本地化版本