No connection CPU hog fix

- the previous fix was incomplete, it shouldn't consume excessive
resources now when there are no connections
This commit is contained in:
Peter Šurda 2018-01-23 15:59:58 +01:00
parent 01c8f3b66d
commit d6df4470e1
Signed by untrusted user: PeterSurda
GPG Key ID: 0C5F50C0B5F37D87

View File

@ -398,6 +398,8 @@ def loop(timeout=30.0, use_poll=False, map=None, count=None,
poller=None): poller=None):
if map is None: if map is None:
map = socket_map map = socket_map
if count is None:
count = True
# code which grants backward compatibility with "use_poll" # code which grants backward compatibility with "use_poll"
# argument which should no longer be used in favor of # argument which should no longer be used in favor of
# "poller" # "poller"
@ -414,27 +416,20 @@ def loop(timeout=30.0, use_poll=False, map=None, count=None,
elif hasattr(select, 'select'): elif hasattr(select, 'select'):
poller = select_poller poller = select_poller
if count is None:
while map:
# fill buckets first
update_sent()
update_received()
# then poll
poller(timeout, map)
else:
if timeout == 0: if timeout == 0:
deadline = 0 deadline = 0
else: else:
deadline = time.time() + timeout deadline = time.time() + timeout
while map and count > 0: while count:
# fill buckets first # fill buckets first
update_sent() update_sent()
update_received() update_received()
subtimeout = deadline - time.time() subtimeout = deadline - time.time()
if subtimeout <= 0: if subtimeout <= 0:
break break
poller(subtimeout, map)
# then poll # then poll
poller(subtimeout, map)
if type(count) is int:
count = count - 1 count = count - 1
class dispatcher: class dispatcher: