用于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第三方库


热门话题
Hibernate:jpamodelgen生成java而不是类   java如何在第二次活动结束后显示广告?   javascript如何在linux或windows上将java导出到jar   java One ArrayList添加了2个不同的选项   AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表   java为什么RecycleView中的水平项在单击时不起作用?   java计算如果存在映射   java在捕获的组上应用正则表达式   如何使用Java在MySQL的同一个表中插入来自不同类的值   java字符串中最常见的字母(大写和小写)   Spring SessionBean实例正在由java中的多个用户共享   使用Spring Boot将@WebInitParam中的值外部化   java一创建线程就开始执行(多线程)   java是安卓所需的系统权限。意图行动给你打电话?