use*_*259 4 python multiprocessing python-3.x python-multiprocessing
使用Python 3.4
我有一个失败的目标函数,并且 apply_async 调用我的错误回调函数而不是我的回调函数。
问题是捕获并发送到 error_callback 的异常没有帮助,我无法弄清楚目标函数中发生错误的位置。
我的错误回调
def error_callback(self,e):
print('error_callback()',e)
# tested one of these at a time
traceback.print_exc()
traceback.print_last()
traceback.print_stack()
Run Code Online (Sandbox Code Playgroud)
和回溯输出
打印_执行
File "/usr/lib/python3.4/traceback.py", line 125, in _iter_chain
context = exc.__context__
AttributeError: 'NoneType' object has no attribute '__context__'
Run Code Online (Sandbox Code Playgroud)
最后打印
File "/usr/lib/python3.4/traceback.py", line 262, in print_last
raise ValueError("no last exception")
ValueError: no last exception
Run Code Online (Sandbox Code Playgroud)
打印堆栈
File "./relative/path/to/my/script.py", line 71, in traceback
traceback.print_stack()
Run Code Online (Sandbox Code Playgroud)
我不得不承认,我对回溯库以及如何使用它不太满意,但在我看来,在这种情况下不可能使用回溯?
我应该怎么办?
您调用的函数traceback都希望从 获取异常信息sys.exec_info,这是在捕获异常时通常存储异常信息的地方。但是,由于您的情况中的实际异常来自子进程,因此当您在父进程中调用它们时,它们不会找到任何异常信息。
您需要e从子进程收到的 Exception 对象中提取相关信息。尝试使用traceback.print_exception适当的参数:
traceback.print_exception(type(e), e, e.__traceback__)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3575 次 |
| 最近记录: |