gevent的简单连接池
项目描述
gevent的简单连接池。
基本用法
以下是一个示例,创建一个连接池,该连接池与运行在localhost 2000上的echo服务器进行通信。
>>> from gsocketpool import Pool
>>> from gsocketpool import TcpConnection
>>>
>>> options = dict(host='localhost', port=2000)
>>> pool = Pool(TcpConnection, options)
>>>
>>> with pool.connection() as conn:
... conn.send('hello')
... print conn.recv()
hello
实现协议
可以通过扩展Connection类轻松实现任意协议。您至少需要重写三个函数,如open()、close()和is_connected()。
上述示例中使用的TcpConnection也是作为Connection的子类实现的。
class TcpConnection(Connection):
def __init__(self, host, port, lifetime=600, timeout=None):
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._host = host
self._port = port
self._lifetime = lifetime
self._timeout = timeout
self._connected = False
self._created = None
def get(self):
return self._sock
def open(self):
self._sock.connect((self._host, self._port))
if self._timeout:
self._sock.settimeout(self._timeout)
self._connected = True
self._created = time.time()
def close(self):
if self._connected:
self._sock.close()
self._connected = False
def is_connected(self):
return self._connected
def is_expired(self):
if time.time() - self._created > self._lifetime:
return True
else:
return False
def send(self, data):
assert self._connected
self._sock.send(data)
def recv(self, size=1024):
assert self._connected
return self._sock.recv(size)
文档
项目详情
关闭
gsocketpool-0.1.6.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2e2749aceadce6b27ca52e2b0a64af99797746a8681e1a2963f72007c14cb14 |
|
MD5 | 49f5f292ef1b60944ae92ca426a5e550 |
|
BLAKE2b-256 | af3da9a5636e855908375a3a06e2eada48ce1bf2bd6eba07651dd019772f648d |