run_in_executorで呼び出されたrun_long_thing()関数で例外を発生させるにはどうすればよいですか? 飲み込まれているようです。私は、ブロッキングコードの関数の結果は必要ありません。それは基本的に火災で、機能を忘れて、それでも私はいずれかが存在する場合、例外をキャッチする必要があります...すべてのPythonのrun_in_executorメソッド呼び出しで例外をキャッチする方法
import asyncio
import time
def fire_and_forget(task, *args, **kwargs):
loop = asyncio.get_event_loop()
if callable(task):
#if threadpoolworker is set to None,
#the max_workers will default to the number of processors on the machine, multiplied by 5
return loop.run_in_executor(None, task, *args, **kwargs)
else:
raise TypeError('Task must be a callable.')
async def run_long_thing(sleep):
print("Doing long thing... {:}".format(sleep))
time.sleep(sleep)
print("Done doing long thing. {:}".format(sleep))
raise Exception("sh*t happens")
def do_it():
print("Starting my main thing...")
print("Calling my long thing...")
for i in range(0,10,1):
try:
fire_and_forget(run_long_thing, i)
print(i)
print("Pom pi dom...")
time.sleep(0.1)
print("POOOOM Pom pi dom...")
except:
print("can i see the sh*t?")
do_it()