On 12/02/2015 09:11, Howard Chu wrote:
Mark R Bannister wrote:
So what I'm asking is, what is the best way of achieving the following
workflow:
- start LDAP search
- start loop
- select() on FD, wake me up when there is data to read
- ldap.result() gives me ALL available data, and without waiting for
anything new
The ldap_result() manpage already tells you how things work. In fact,
so does the python-ldap documentation. Your loop structure is wrong.
- Attend to other unrelated events
- Go round loop again
You should be coding, instead:
- start LDAP search
- start loop
- select() on FD, wake me up when there is data to read
loop2:
- call ldap.result() with 0 timeout in a loop until it returns 0.
- Attend to other unrelated events
- Go round loop again
Thanks Howard, that kind of makes sense, but not understanding the
internal workings of ldap.result(), what's to prevent
loop2 taking, say, 5 seconds to complete? This could be a busy worker
thread, I can't afford for it to take that much time
out to process a single transaction.
Thanks,
Mark.