ldap-async.rst 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. .. % $Id: ldap-async.rst,v 1.4 2011/07/28 08:52:01 stroeder Exp $
  2. **************************************************************
  3. :py:mod:`ldap.async` Stream-processing of large search results
  4. **************************************************************
  5. .. py:module:: ldap.async
  6. :synopsis: Framework for stream-processing of large search results.
  7. With newer Python versions one might want to consider using
  8. :py:mod:`ldap.resiter` instead.
  9. Classes
  10. =======
  11. .. autoclass:: ldap.async.AsyncSearchHandler
  12. :members:
  13. .. autoclass:: ldap.async.List
  14. :members:
  15. .. autoclass:: ldap.async.Dict
  16. :members:
  17. .. autoclass:: ldap.async.IndexedDict
  18. :members:
  19. .. autoclass:: ldap.async.LDIFWriter
  20. :members:
  21. .. autoclass:: ldap.async.DSMLWriter
  22. :members:
  23. .. _ldap.async-example:
  24. Examples
  25. ========
  26. .. _ldap.async-example.List:
  27. Using ldap.async.List
  28. ^^^^^^^^^^^^^^^^^^^^^
  29. This example demonstrates how to use class ldap.async.List for
  30. retrieving partial search results even though the exception
  31. :exc:`ldap.SIZELIMIT_EXCEEDED` was raised because a server side limit was hit. ::
  32. import sys,ldap,ldap.async
  33. s = ldap.async.List(
  34. ldap.initialize('ldap://localhost'),
  35. )
  36. s.startSearch(
  37. 'dc=stroeder,dc=com',
  38. ldap.SCOPE_SUBTREE,
  39. '(objectClass=*)',
  40. )
  41. try:
  42. partial = s.processResults()
  43. except ldap.SIZELIMIT_EXCEEDED:
  44. sys.stderr.write('Warning: Server-side size limit exceeded.\n')
  45. else:
  46. if partial:
  47. sys.stderr.write('Warning: Only partial results received.\n')
  48. sys.stdout.write(
  49. '%d results received.\n' % (
  50. len(s.allResults)
  51. )
  52. )
  53. .. _ldap.async-example.LDIFWriter:
  54. Using ldap.async.LDIFWriter
  55. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  56. This example demonstrates how to use class ldap.async.LDIFWriter
  57. for writing search results as LDIF to stdout. ::
  58. import sys,ldap,ldap.async
  59. s = ldap.async.LDIFWriter(
  60. ldap.initialize('ldap://localhost:1390'),
  61. sys.stdout
  62. )
  63. s.startSearch(
  64. 'dc=stroeder,dc=com',
  65. ldap.SCOPE_SUBTREE,
  66. '(objectClass=*)',
  67. )
  68. try:
  69. partial = s.processResults()
  70. except ldap.SIZELIMIT_EXCEEDED:
  71. sys.stderr.write('Warning: Server-side size limit exceeded.\n')
  72. else:
  73. if partial:
  74. sys.stderr.write('Warning: Only partial results received.\n')
  75. sys.stderr.write(
  76. '%d results received.\n' % (
  77. s.endResultBreak-s.beginResultsDropped
  78. )
  79. )