Flush the queued items in linear periodically

This commit is contained in:
James Cammarata 2016-09-10 07:26:41 -05:00
parent 6b206f5d00
commit d3418fd658
2 changed files with 9 additions and 5 deletions

View file

@ -181,7 +181,7 @@ class StrategyBase:
return False return False
passes = 1 passes = 1
while not self._tqm._terminated and passes < 3: while not self._tqm._terminated and passes < 3 and self._pending_results > 0:
try: try:
task_result = self._final_q.get(timeout=timeout) task_result = self._final_q.get(timeout=timeout)
original_host = get_original_host(task_result._host) original_host = get_original_host(task_result._host)

View file

@ -266,9 +266,13 @@ class StrategyModule(StrategyBase):
if run_once: if run_once:
break break
# FIXME: probably not required here any more with the result proc # flush the queue if we've got more items than we have workers,
# having been removed, so there's no only a single result # and read back any results which may have arrived already
# queue for the main thread if len(items_to_queue) > len(self._tqm._workers):
self._tqm.queue_multiple_tasks(items_to_queue, play_context)
items_to_queue = []
if self._pending_results > 0:
results += self._process_pending_results(iterator, one_pass=True) results += self._process_pending_results(iterator, one_pass=True)
self._tqm.queue_multiple_tasks(items_to_queue, play_context) self._tqm.queue_multiple_tasks(items_to_queue, play_context)