gevent的简单连接池

gsocketpool的Python项目详细描述


https://badge.fury.io/py/gsocketpool.pnghttps://travis-ci.org/studio-ousia/gsocketpool.png?branch=master

一个简单的gevent连接池。

基本用法

下面是创建连接池的示例,该连接池与运行在localhost 2000上的echo服务器进行通信。

>>>fromgsocketpoolimportPool>>>fromgsocketpoolimportTcpConnection>>>>>>options=dict(host='localhost',port=2000)>>>pool=Pool(TcpConnection,options)>>>>>>withpool.connection()asconn:...conn.send('hello')...printconn.recv()hello

实施协议

通过扩展Connection类,可以轻松实现任意协议必须重写至少三个函数,如open()close()is_connected()

tcpconnection在上面的示例中使用的也是作为连接的子类实现的。

classTcpConnection(Connection):def__init__(self,host,port,lifetime=600,timeout=None):self._sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)self._host=hostself._port=portself._lifetime=lifetimeself._timeout=timeoutself._connected=Falseself._created=Nonedefget(self):returnself._sockdefopen(self):self._sock.connect((self._host,self._port))ifself._timeout:self._sock.settimeout(self._timeout)self._connected=Trueself._created=time.time()defclose(self):ifself._connected:self._sock.close()self._connected=Falsedefis_connected(self):returnself._connecteddefis_expired(self):iftime.time()-self._created>self._lifetime:returnTrueelse:returnFalsedefsend(self,data):assertself._connectedself._sock.send(data)defrecv(self,size=1024):assertself._connectedreturnself._sock.recv(size)

文件

文档可在http://gsocketpool.readthedocs.org/找到。

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

推荐PyPI第三方库


热门话题
java使用ApachePOI将excel文件导入postgreSQL表   java多线程从iText pdf提取文本   winapi Java和SetWindowDisplayAffinity   eclipse juno的java Websphere 6.1插件   java MPAndroidChart:为Y轴提供一些偏移   java中作为参数传递枚举类型的继承   java Gui jframe的工作原理与netbeans不同   使用Bouncy Castle和PDFBox在Java中验证PDF签名   优化缩小Java代码   java无法在安卓中从Firebase取回子数据   返回的java方法?我应该什么时候用?   java错误处理已完成,退出代码为1。与穿过阵列的for循环有关   多线程Java volatile是否阻止缓存或强制执行写缓存?   java Multi-collectItems如何提前终止并返回已收集的项目   java为什么不在服务(请求,响应)中直接调用processRequest(请求,响应)?   java如何从字符串生成int数组?   打印获取用户输入的值并在其他预选文本中显示。JAVA   未显示java DynamicAsper UTF8字符   java Eclipse RCP:不启动应用程序的命令行参数