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 communicats an echo server running on localhost 2000.
>>> from gsocketpool.pool import Pool
>>> from gsocketpool.connection 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.tar.gz
(5.3 kB
view details)
File details
Details for the file gsocketpool-0.1.tar.gz
.
File metadata
- Download URL: gsocketpool-0.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a01c5d837c246e3b1954eba7309b8e3669f74247955e3d3d02d7b220b99285d1 |
|
MD5 | 8773f5976d5c787df5f83f9f04e0e483 |
|
BLAKE2b-256 | 8bb5b90462f86ed7b781896e1dddb41208b3f9b3380963bedb9795bce1d21e59 |