gpt4 book ai didi

python3如何在应用error_callback时找出apply_async目标函数中的哪一行导致错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:32 24 4
gpt4 key购买 nike

使用 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()

回溯输出

打印输出

  File "/usr/lib/python3.4/traceback.py", line 125, in _iter_chain
context = exc.__context__
AttributeError: 'NoneType' object has no attribute '__context__'

最后打印

  File "/usr/lib/python3.4/traceback.py", line 262, in print_last
raise ValueError("no last exception")
ValueError: no last exception

打印堆栈

  File "./relative/path/to/my/script.py", line 71, in traceback
traceback.print_stack()

我不得不承认,我对 traceback 库及其使用方法不是很满意,但在我看来,在这种情况下不可能使用 traceback 吗?

我该怎么办?

最佳答案

您正在调用的 traceback 函数都期望从 sys.exec_info 获取异常信息,异常信息通常存储在异常发生时捕捉。但是,由于您案例中的实际异常来自子进程,因此当您在父进程中调用它们时,它们找不到任何异常信息。

您需要使用从子进程接收到的异常对象 e 中提取相关信息。尝试使用带有适当参数的 traceback.print_exception:

traceback.print_exception(type(e), e, e.__traceback__)

关于python3如何在应用error_callback时找出apply_async目标函数中的哪一行导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com