Browse Source

add documentation for riakcached.pools

master
Brett Langdon 12 years ago
parent
commit
3588f5e063
1 changed files with 43 additions and 9 deletions
  1. +43
    -9
      riakcached/pools.py

+ 43
- 9
riakcached/pools.py View File

@ -4,12 +4,22 @@ from riakcached import exceptions
class Pool(object):
"""
"""A Riak HTTP request connection pool base class
This is the base class that should be used for any custom connection
pool to be used by any of the :class:`riakcached.clients.RiakClient`
"""
__slots__ = ["timeout", "url"]
def __init__(self, base_url="http://127.0.0.1:8098", timeout=2, auto_connect=True):
"""
"""Constructs a new :class:`riakcached.pools.Pool`
:param base_url: the base url that the client should use for requests
:type base_url: str
:param timeout: the connection timeout to use
:type timeout: int
:param auto_connect: whether or not to call :func:`connect` on __init__
:type auto_connect: bool
"""
self.url = base_url
self.timeout = timeout
@ -17,39 +27,63 @@ class Pool(object):
self.connect()
def connect(self):
"""
"""Create the connection pool
"""
raise NotImplementedError("You must not use %s directly" % self.__class__.__name__)
def close(self):
"""
"""Closes the connection pool if it is opened
"""
raise NotImplementedError("You must not use %s directly" % self.__class__.__name__)
def request(self, method, url, body=None, headers=None):
"""
"""Makes a single HTTP request
:param method: the HTTP method to make the requets with
:type method: str
:param url: the full url for the request
:type url: str
:param body: the data to POST or PUT with the request
:type body: str
:param headers: extra headers to add to the request
:type headers: dict
:returns: tuple - status, data, headers
:raises: :class:`riakcached.exceptions.RiakcachedTimeout`
:raises: :class:`riakcached.exceptions.RiakcachedConnectionError`
"""
raise NotImplementedError("You must not use %s directly" % self.__class__.__name__)
class Urllib3Pool(Pool):
"""
"""A subclass of :class:`riakcached.pools.Pool` which uses `urllib3` for requests
"""
__slots__ = ["pool"]
def connect(self):
"""
"""Create the connection pool
"""
self.pool = urllib3.connection_from_url(self.url)
def close(self):
"""
"""Closes the connection pool if it is opened
"""
if self.pool:
self.pool.close()
def request(self, method, url, body=None, headers=None):
"""
"""Makes a single HTTP request
:param method: the HTTP method to make the requets with
:type method: str
:param url: the full url for the request
:type url: str
:param body: the data to POST or PUT with the request
:type body: str
:param headers: extra headers to add to the request
:type headers: dict
:returns: tuple - status, data, headers
:raises: :class:`riakcached.exceptions.RiakcachedTimeout`
:raises: :class:`riakcached.exceptions.RiakcachedConnectionError`
"""
try:
response = self.pool.urlopen(


Loading…
Cancel
Save