# `ldap.async` Stream-processing of large search results

With newer Python versions one might want to consider using `ldap.resiter` instead.

## Classes

## Examples

### Using ldap.async.List

This example demonstrates how to use class ldap.async.List for retrieving partial search results even though the exception `ldap.SIZELIMIT_EXCEEDED` was raised because a server side limit was hit.

    import sys,ldap,ldap.async

    s = ldap.async.List(
      ldap.initialize('ldap://localhost'),
    )

    s.startSearch(
      'dc=stroeder,dc=com',
      ldap.SCOPE_SUBTREE,
      '(objectClass=*)',
    )

    try:
      partial = s.processResults()
    except ldap.SIZELIMIT_EXCEEDED:
      sys.stderr.write('Warning: Server-side size limit exceeded.\n')
    else:
      if partial:
        sys.stderr.write('Warning: Only partial results received.\n')

    sys.stdout.write(
      '%d results received.\n' % (
        len(s.allResults)
      )
    )

### Using ldap.async.LDIFWriter

This example demonstrates how to use class ldap.async.LDIFWriter for writing search results as LDIF to stdout.

    import sys,ldap,ldap.async

    s = ldap.async.LDIFWriter(
      ldap.initialize('ldap://localhost:1390'),
      sys.stdout
    )

    s.startSearch(
      'dc=stroeder,dc=com',
      ldap.SCOPE_SUBTREE,
      '(objectClass=*)',
    )

    try:
      partial = s.processResults()
    except ldap.SIZELIMIT_EXCEEDED:
      sys.stderr.write('Warning: Server-side size limit exceeded.\n')
    else:
      if partial:
        sys.stderr.write('Warning: Only partial results received.\n')

    sys.stderr.write(
      '%d results received.\n' % (
        s.endResultBreak-s.beginResultsDropped
      )
    )