@@ -147,7 +147,8 @@ def __init__(self, processes=None, initializer=None, initargs=(),
147147
148148 self ._task_handler = threading .Thread (
149149 target = Pool ._handle_tasks ,
150- args = (self ._taskqueue , self ._quick_put , self ._outqueue , self ._pool )
150+ args = (self ._taskqueue , self ._quick_put , self ._outqueue ,
151+ self ._pool , self ._cache )
151152 )
152153 self ._task_handler .daemon = True
153154 self ._task_handler ._state = RUN
@@ -338,7 +339,7 @@ def _handle_workers(pool):
338339 debug ('worker handler exiting' )
339340
340341 @staticmethod
341- def _handle_tasks (taskqueue , put , outqueue , pool ):
342+ def _handle_tasks (taskqueue , put , outqueue , pool , cache ):
342343 thread = threading .current_thread ()
343344
344345 for taskseq , set_length in iter (taskqueue .get , None ):
@@ -349,9 +350,12 @@ def _handle_tasks(taskqueue, put, outqueue, pool):
349350 break
350351 try :
351352 put (task )
352- except IOError :
353- debug ('could not put task on queue' )
354- break
353+ except Exception as e :
354+ job , ind = task [:2 ]
355+ try :
356+ cache [job ]._set (ind , (False , e ))
357+ except KeyError :
358+ pass
355359 else :
356360 if set_length :
357361 debug ('doing set_length()' )
0 commit comments