X-Git-Url: https://code.delx.au/bg-scripts/blobdiff_plain/5f784db95af686ef4d6e7ec97937477010bf6fb8..9bbea708782fc721666590c03c36f574cbb3e756:/asyncsched.py diff --git a/asyncsched.py b/asyncsched.py index 428fcf3..cae8713 100644 --- a/asyncsched.py +++ b/asyncsched.py @@ -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)