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:
parent
01c8f3b66d
commit
d6df4470e1
|
@ -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:
|
||||||
|
|
Reference in New Issue
Block a user