Flush the queued items in linear periodically
This commit is contained in:
parent
6b206f5d00
commit
d3418fd658
2 changed files with 9 additions and 5 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue