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使用EntityManager有没有更有效的习惯用法?   Android上的java Google应用程序引擎(GAE)响应代码和cookie   如何在Java中创建单元测试?   java从DB获取特定列的最新行   java替换所有悬空元字符   java使用Hibernate删除SQL表中的数据   swing显示JComponent对象Java   java在确认内容类型后如何将URL保存到文件?   javascript如何从段落中选择大量单词?(硒)   java在Linux上使用BundleEnableTiveCode不起作用   java使用日志似然性来比较不同的mallet主题模型?   java无法在Tomcat7上运行Spring Boot 2.0:“由于缺少ServletWebServerFactory bean,无法启动ServletWebServerApplicationContext。”   java有办法显式引用非静态内部类实例吗?   java如何使用Spring的NamedParameterJdbcTemplate在MySQL数据库中创建和删除表?