Async callback in python
Gabriel Genellina
gagsl-py at yahoo.com.ar
Tue Dec 5 00:53:03 EST 2006
At Tuesday 5/12/2006 01:18, Linan wrote:
>t=T('aVerySlowSite','/')
>asyncore.loop()
>for i in range(0,10):
> print '%d in main process' % i
> time.sleep(1)
>
>Suppose it's asynchronous, couple of '%d in main process' lines should
>be mixed in the output of T.handle_read(), right?
No. As you noticed, asyncore.loop (without arguments) won't return
until all channels are closed.
>But I found that
>actually main process was blocked at asyncore.loop(), until the the
>socket was closed.
Exactly.
>My questions:
>1, Did I do anything wrong?
>2, Is it real asynchronous?
>3, If not, where to get the real one(s)?
Perhaps you didn't understand the nature of asyncore processing. The
idea is not to have many threads, each one blocking on its own
(synchronous) socket processing. Instead, using a single thread which
never blocks, and dispatches events to many instances, each one
processing its own data.
If you want to do other things mixed with network events, put those
things inside the loop, that is, instead of asyncore.loop() do something like:
while asyncore.socket_map:
asyncore.loop(1, count=1)
// do other things
--
Gabriel Genellina
Softlab SRL
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar
More information about the Python-list
mailing list