J
John Gordon
I'm writing an application that interacts with ldap, and I'm looking
for advice on how to handle the connection. Specifically, how to
close the ldap connection when the application is done.
I wrote a class to wrap an LDAP connection, similar to this:
import ldap
import ConfigParser
class MyLDAPWrapper(object):
def __init__(self):
config = ConfigParser.SafeConfigParser()
config.read('sample.conf')
uri = config.get('LDAP', 'uri')
user = config.get('LDAP', 'user')
password = config.get('LDAP', 'password')
self.ldapClient = ldap.initialize(uri)
self.ldapClient.simple_bind_s(user, password)
My question is this: what is the best way to ensure the ldap connection
gets closed when it should? I could write an explicit close() method,
but that seems a bit messy; there would end up being lots of calls to
close() scattered around in my code (primarily inside exception handlers.)
Or I could write a __del__ method:
def __del__(self):
self.ldapClient.unbind_s()
This seems like a much cleaner solution, as I don't ever have to worry
about closing the connection; it gets done automatically.
I haven't ever used __del__ before. Are there any 'gotchas' I need to
worry about?
Thanks!
for advice on how to handle the connection. Specifically, how to
close the ldap connection when the application is done.
I wrote a class to wrap an LDAP connection, similar to this:
import ldap
import ConfigParser
class MyLDAPWrapper(object):
def __init__(self):
config = ConfigParser.SafeConfigParser()
config.read('sample.conf')
uri = config.get('LDAP', 'uri')
user = config.get('LDAP', 'user')
password = config.get('LDAP', 'password')
self.ldapClient = ldap.initialize(uri)
self.ldapClient.simple_bind_s(user, password)
My question is this: what is the best way to ensure the ldap connection
gets closed when it should? I could write an explicit close() method,
but that seems a bit messy; there would end up being lots of calls to
close() scattered around in my code (primarily inside exception handlers.)
Or I could write a __del__ method:
def __del__(self):
self.ldapClient.unbind_s()
This seems like a much cleaner solution, as I don't ever have to worry
about closing the connection; it gets done automatically.
I haven't ever used __del__ before. Are there any 'gotchas' I need to
worry about?
Thanks!