A simple connection pool for gevent
Project description
A simple connection pool for gevent.
Basic Usage
The following is an example to create a connection pool that communicates an echo server running on localhost 2000.
>>> 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
Implementing Protocol
Arbitrary protocols can be easily implemented by extending Connection class. You have to override at least three functions such as open(), close() and is_connected().
TcpConnection used in the above example is also implemented as a subclass of 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
@property
def socket(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)
Documentation
Documentation is available at http://gsocketpool.readthedocs.org/.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gsocketpool-0.1.1.tar.gz
(5.4 kB
view details)
File details
Details for the file gsocketpool-0.1.1.tar.gz
.
File metadata
- Download URL: gsocketpool-0.1.1.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f050087fa91a35f38bf3e3f4827e3054fd6e998f66d99e89681ba666a643e520 |
|
MD5 | 7f85ab937e8222162b6638e9f5d82151 |
|
BLAKE2b-256 | b6c1e2aee57d4477d97042bbe4a72a2c501996a621ebd401c9cd89fb52e6d3af |