A simple connector pool for python-ldap and related LDAP libraries.
Go to file
Corey Bryant 7734b7f45d PY3: switch to using unicode text values
In Python 3, python-ldap no longer allows bytes for DN/RDN/field
names. Instead, text values are represented as str, the Unicode
text type.

This patch updates the code to adhere to this behavior.

More details about byte/str usage in python-ldap can be found at:
http://www.python-ldap.org/en/latest/bytes_mode.html#bytes-mode

Change-Id: I9ef10432229aaffe4ac9bd733d608098cdae3b9a
Partial-Bug: #1798184
2018-10-19 09:53:41 -04:00
doc Switch from oslosphinx to openstackdocstheme 2017-06-30 15:37:13 +07:00
ldappool PY3: switch to using unicode text values 2018-10-19 09:53:41 -04:00
.gitignore Switch to stestr 2018-07-17 08:17:25 +07:00
.gitreview add .gitreview and fix ldappool gate 2016-05-12 13:50:05 -07:00
.stestr.conf Switch to stestr 2018-07-17 08:17:25 +07:00
.zuul.yaml add python 3.6 unit test job 2018-08-29 16:04:56 -04:00
CHANGES.rst starting 1.1 2012-02-27 23:08:32 +01:00
CONTRIBUTORS preparing 1.0 2012-02-27 23:05:12 +01:00
MANIFEST.in preparing 1.0 2012-02-27 23:05:12 +01:00
README.rst Switch to python-ldap again 2018-07-18 20:25:01 +00:00
lower-constraints.txt Switch to python-ldap again 2018-07-18 20:25:01 +00:00
requirements.txt Switch to python-ldap again 2018-07-18 20:25:01 +00:00
setup.cfg Removed older version of python added 3.5 2018-09-29 16:30:04 +08:00
setup.py Updated from global requirements 2017-03-10 03:31:33 +00:00
test-requirements.txt Bump to hacking 1.1.x 2018-07-17 10:52:49 +02:00
tox.ini Removed older version of python added 3.5 2018-09-29 16:30:04 +08:00

README.rst

ldappool

A simple connector pool for python-ldap.

The pool keeps LDAP connectors alive and let you reuse them, drastically reducing the time spent to initiate a ldap connection.

The pool has useful features like:

  • transparent reconnection on failures or server restarts
  • configurable pool size and connectors timeouts
  • configurable max lifetime for connectors
  • a context manager to simplify acquiring and releasing a connector

You need python-ldap in order to use this library

Quickstart

To work with the pool, you just need to create it, then use it as a context manager with the connection method:

from ldappool import ConnectionManager

cm = ConnectionManager('ldap://localhost')

with cm.connection('uid=adminuser,ou=logins,dc=mozilla', 'password') as conn:
    .. do something with conn ..

The connector returned by connection is a LDAPObject, that's binded to the server. See https://pypi.org/project/python-ldap/ for details on how to use a connector.

ConnectionManager options

Here are the options you can use when instanciating the pool:

  • uri: ldap server uri [mandatory]
  • bind: default bind that will be used to bind a connector. default: None
  • passwd: default password that will be used to bind a connector. default: None
  • size: pool size. default: 10
  • retry_max: number of attempts when a server is down. default: 3
  • retry_delay: delay in seconds before a retry. default: .1
  • use_tls: activate TLS when connecting. default: False
  • timeout: connector timeout. default: -1
  • use_pool: activates the pool. If False, will recreate a connector each time. default: True

The connection method takes two options:

  • bind: bind used to connect. If None, uses the pool default's. default: None
  • passwd: password used to connect. If None, uses the pool default's. default: None