Skip to main content

gsocketpool

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

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

    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)

Documentation

Documentation is available at http://gsocketpool.readthedocs.org/.

Metadata

Release files for gsocketpool 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gsocketpool 0.1.6
File Size Uploaded Provenance Actions
gsocketpool-0.1.6.tar.gz 5.5 kB Without provenance Details for gsocketpool-0.1.6.tar.gz

Release files / gsocketpool-0.1.6.tar.gz

Download URL gsocketpool-0.1.6.tar.gz
Size 5.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f2e2749aceadce6b27ca52e2b0a64af99797746a8681e1a2963f72007c14cb14
BLAKE2b-256 checksum
How to use checksums
af3da9a5636e855908375a3a06e2eada48ce1bf2bd6eba07651dd019772f648d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for gsocketpool 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page