@@ -174,7 +174,8 @@ def __init__(self, processes=None, initializer=None, initargs=(),
174174
175175 self ._task_handler = threading .Thread (
176176 target = Pool ._handle_tasks ,
177- args = (self ._taskqueue , self ._quick_put , self ._outqueue , self ._pool )
177+ args = (self ._taskqueue , self ._quick_put , self ._outqueue ,
178+ self ._pool , self ._cache )
178179 )
179180 self ._task_handler .daemon = True
180181 self ._task_handler ._state = RUN
@@ -364,7 +365,7 @@ def _handle_workers(pool):
364365 util .debug ('worker handler exiting' )
365366
366367 @staticmethod
367- def _handle_tasks (taskqueue , put , outqueue , pool ):
368+ def _handle_tasks (taskqueue , put , outqueue , pool , cache ):
368369 thread = threading .current_thread ()
369370
370371 for taskseq , set_length in iter (taskqueue .get , None ):
@@ -375,9 +376,12 @@ def _handle_tasks(taskqueue, put, outqueue, pool):
375376 break
376377 try :
377378 put (task )
378- except OSError :
379- util .debug ('could not put task on queue' )
380- break
379+ except Exception as e :
380+ job , ind = task [:2 ]
381+ try :
382+ cache [job ]._set (ind , (False , e ))
383+ except KeyError :
384+ pass
381385 else :
382386 if set_length :
383387 util .debug ('doing set_length()' )
0 commit comments