EventLoop: shorten iteration poll if timeouts
authorZac Medico <zmedico@gentoo.org>
Sat, 11 Feb 2012 19:34:36 +0000 (11:34 -0800)
committerZac Medico <zmedico@gentoo.org>
Sat, 11 Feb 2012 19:34:36 +0000 (11:34 -0800)
This fixes EventLoop.iteration() so that it doesn't poll too long when
there are timeouts registered, since it's not nice to spend a long time
polling for an IO event that might never arrive even though a timeout
may have changed some state that would terminate a timeout loop like
in QueueScheduler.run() or AbstractPollTask._wait_loop(). This makes
EventLoop.iteration() behave more like GlibEventLoop.iteration().

pym/portage/util/_eventloop/EventLoop.py

index 02c3cec01146c3076bc6bb97d3ea9b0e67e14f87..a7161dbd56fd877081fadae151e35efc989cb068 100644 (file)
@@ -166,7 +166,7 @@ class EventLoop(object):
 
                if not self._poll_event_queue:
                        if may_block:
-                               timeout = None
+                               timeout = self._timeout_interval
                        else:
                                timeout = 0
                        self._poll(timeout=timeout)