]> code.delx.au - bg-scripts/commitdiff
Fixed some more python2.3 issues
authorGreg Darke <greg@tsukasa.net.au>
Mon, 21 Jul 2008 08:26:32 +0000 (18:26 +1000)
committerGreg Darke <greg@tsukasa.net.au>
Mon, 21 Jul 2008 08:26:32 +0000 (18:26 +1000)
asyncsched.py

index 428fcf3fb39dcbfd710bb3653da880eefb085b9c..cae871306b93b3df6096dd01bfbda203aaf894f6 100644 (file)
@@ -2,7 +2,7 @@
 # Licensed for distribution under the GPL version 2, check COPYING for details
 # asyncore.loop() with delayed function calls
 
-import asyncore
+import asyncore, select
 import heapq
 import signal
 import time
@@ -38,6 +38,14 @@ def loop(timeout=30.0, use_poll=False):
        running = True
        oldhandler = signal.signal(signal.SIGTERM, exit)
 
+       if use_poll:
+               if hasattr(select, 'poll'):
+                       poll_fun = asyncore.poll3
+               else:
+                       poll_fun = asyncore.poll2
+       else:
+               poll_fun = asyncore.poll
+
        while running:
                now = time.time()
                while tasks and tasks[0].time < now:
@@ -48,7 +56,7 @@ def loop(timeout=30.0, use_poll=False):
                if tasks:
                        t = max(min(t, tasks[0].time - now), 0)
 
-               asyncore.loop(timeout=t, count=1, use_poll=use_poll)
+               poll_fun(timeout=t)
        
        signal.signal(signal.SIGTERM, oldhandler)