来自:http://hi.baidu.com/arbow/blog/item/6cfcd13bcc8056ed15cecbc1.html

一直在想,要是Stackless实现的Web Server中要实现反向代理,该怎么办。Http请求是绝对不能阻塞的,不然就没有意义了。

结果给我找到两个库:

1.stacklesssocket

http://stacklessexamples.googlecode.com/svn/trunk/examples/networking/stacklesssocket.py

主要使用了asyncore库,将原先需要阻塞的socket库调用改成了异步。

2. httplib2

http://code.google.com/p/httplib2/

与python标准库里面的urllib2,httplib相比,这玩意主要支持Keep-Alive!在大量请求时,可以复用连接,可以节省很多系统开销。

随手改了下张教主的代码(http://zsp.javaeye.com/blog/261132)

import stackless

import stacklesssocket

stacklesssocket.install()

import urllib2, httplib, httplib2

LOOP = 1000

def test_urllib2(i):

print "urllib2 test", i

for i in xrange(0, LOOP):

urllib2.urlopen("http://www.youdao.com").read()[:80]

print "urllib2 test", i , "finished"

def test_http(i):

print "http test", i

for i in xrange(0, LOOP):

conn = httplib.HTTPConnection("www.youdao.com")

conn.request("GET", "/")

conn.getresponse().read()[:80]

conn.close()

def test_http2(i):

print "httplib2 test", i

http = httplib2.Http()

for i in xrange(0, LOOP):

resp, content = http.request("http://www.youdao.com/")

#print content[:80]

for i in range(5):

#stackless.tasklet(test_urllib2)(i)

stackless.tasklet(test_http2)(i)

stackless.run()

跑了下,使用urllib2/httplib时,客户端的网络端口不停更换,流量达到几十K,在使用httplib2时,就那5个连接,流量只有10K左右。两者的处理时间基本接近,可以认为网络延迟不高,因此多出来的N*3次握手所占时间不多。

好了,有了这2个库,世界更加美好了,接下来可以做一些好玩的东东:D

3.http://pynetlibs.sourceforge.net/default.html 

4.http://code.google.com/p/tinynl/

转载于:https://www.cnblogs.com/vilyLei/articles/2113260.html

Python 的一些网络库(感谢Arbow)相关推荐

  1. python模块介绍-gevent介绍:基于协程的网络库

    2019独角兽企业重金招聘Python工程师标准>>> python模块介绍-gevent介绍:基于协程的网络库 介绍 gevent是基于协程的Python网络库.特点: 基于lib ...

  2. Python实战之网络与爬虫篇-----如何查看用户Star了哪些库

    Python实战之网络与爬虫篇-----如何查看用户Star了哪些库 1.问题求解 试着用前面所学的知识查看用户Codingchaozhang 都Starred了哪些库,并且自动在游览器中打开这些库的 ...

  3. Python下的网络抓包库

    一直以来对于Python下的网络抓包库很疑惑,搞不清楚pylibpcap.pypcap.pycap这些库之间是什么关系,混沌了很长时间,在网上G了很久慢慢搞清楚了,其实这些都是libpcap的Pyth ...

  4. 《Linux多线程服务端编程:使用muduo C++网络库》书摘6.6.2节

    6.6.2 常见的并发网络服务程序设计方案 W. Richard Stevens 的<UNIX 网络编程(第2 版)>第27 章"Client-ServerDesign Alte ...

  5. 《Linux多线程服务端编程:使用muduoC++网络库》学习笔记

    文章目录 第1章 线程安全的对象生命期管理 1.1 当析构函数遇到多线程 1.1.1 线程安全的定义 1.1.3 线程安全实例 1.2 对象的创建很简单 1.3 销毁很难 1.4 线程安全的Obser ...

  6. 国产网络库libhv开源四周年回顾

    libhv是一个跨平台的c/c++网络库,本文写在libhv开源四周年之际,借机回顾了libhv的发展历程. github地址:https://github.com/ithewei/libhv 文章目 ...

  7. python调用海康威视sdk库_HikVision SDK: C++ 至 Python

    海康威视(HikVision)在视频解决方案的地位毋庸置疑,起码属于国内业界顶尖水平.选择他家设备主要有两个原因:首要是因为他家产品贵,这确实是选择的首要原因(毕竟经费是--咳,打住):另一个重要原因 ...

  8. 基于Python实现的网络爬虫项目——多线程下载小说并保存为txt文件(包含完整代码及注释)

    基于Python实现的网络爬虫项目--多线程下载小说并保存为txt文件(包含完整代码及注释) 一.确立预期目标 二.完成项目所需工具 三.项目需要解决的问题 问题一 问题二 问题三 问题四 问题五 问 ...

  9. python中nlp的库_单词袋简介以及如何在Python for NLP中对其进行编码

    python中nlp的库 by Praveen Dubey 通过Praveen Dubey 单词词汇入门以及如何在Python中为NLP 编写代码的简介 (An introduction to Bag ...

  10. 谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!

    编译 |  琥珀 出品 | AI科技大本营(ID:rgznai100) 世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性.然而,这些系统中量子态的数量程指数级增 ...

最新文章

  1. Matlab与线性代数 -- 向量的范数
  2. 美团十年,支撑最大规模外卖配送的一站式机器学习平台如何炼成?
  3. AMS重要的数据结构解析(二):TaskRecord
  4. cmake 编译Release版本
  5. 如何用CSS让一个容器水平垂直居中?
  6. 单元测试反模式,完整列表
  7. Spark系列—02 Spark程序牛刀小试
  8. 奇异值分解(Singular Value Decomposition,SVD)
  9. 广州云栖大会:阿里云携手虎牙,首次落地直播行业边缘节点及云企业网服务
  10. 2017.12.19
  11. 江苏大学考研885程序设计 - 填空选择知识点
  12. 计算机网络 第一章 计算机网络体系结构
  13. 无法在此设备上查看受保护内容_细说丨你想要的Excel保护与加密都在这里
  14. c语言机试编程下载,C语言机试编程题库
  15. OSPF —— 重分发(配置命令)
  16. Java 搭建srs流媒体服务器,并使用ffmpeg推流
  17. 北方经贸杂志北方经贸杂志社北方经贸编辑部2022年第10期目录
  18. 数据库容灾技术之--数据容灾技术比较
  19. GPS导航知识——DGPS
  20. 零成本、零流量,我是如何空手反套白狼?

热门文章

  1. 俄罗斯一款地图软件无意曝光300多个军事基地
  2. 最小化JavaScript代码
  3. ES6新语法之let关键字;有别于传统关键字var的使用
  4. ubuntu 14.04 設定hostname
  5. TechSmith Camtasia Mac v2021屏幕录制剪辑软件
  6. IDM(Internet Download Manager)下载各类安装包(github代码、python包)、软件、视频、文档的神器,居家必备良药
  7. Linus 怒批 GitHub:制造了毫无用处的垃圾合并信息!
  8. 为什么 Nginx 比 Apache 更牛叉?
  9. 原创整理:92份面试题,累计3625页,肝的太累了!
  10. 死磕单点登录的实现原理....