#NEWLINE# def _chained_worker( ident , shared_death , queue , futs ) : #NEWLINE# #INDENT# running = True #NEWLINE# while running : #NEWLINE# #INDENT# if shared_death . is_set ( ) : #NEWLINE# #INDENT# LOG . warn ( 'Worker %s dying unhappily...' , ident ) #NEWLINE# running = False #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# w = queue . get ( ) #NEWLINE# if ( shared_death is _TOMBSTONE ) : #NEWLINE# #INDENT# queue . put ( w ) #NEWLINE# LOG . info ( 'Worker %s dying happily...' , ident ) #NEWLINE# running = False #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# ( func , fut ) = w #NEWLINE# if fut . set_running_or_notify_cancel ( ) : #NEWLINE# #INDENT# try : #NEWLINE# #INDENT# result = func ( ) #NEWLINE# #UNINDENT# except BaseException : #NEWLINE# #INDENT# LOG . exception ( 'Worker %s dying unhappily...' , ident ) #NEWLINE# ( exc_type , exc_val , exc_tb ) = sys . exc_info ( ) #NEWLINE# if six . PY2 : #NEWLINE# #INDENT# fut . set_exception_info ( exc_val , exc_tb ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# fut . set_exception ( exc_val ) #NEWLINE# #UNINDENT# shared_death . set ( ) #NEWLINE# for fut in futs : #NEWLINE# #INDENT# fut . cancel ( ) #NEWLINE# #UNINDENT# running = False #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# fut . set_result ( result )