我有一個解碼異常並將信息推送到文件的函數。以下是我做的基本上是:python的cgitb和inspect.py奇怪的例外
exc_info = sys.exc_info
txt = cgitb.text(exc_info)
利用這一點,我得到了以下異常跟蹤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\job_queue\utils\start_workers.py", line 40, in start_worker
worker_loop(r_jq, worktype, worker_id)
File "C:\Python27\lib\site-packages\job_queue\server\jq_worker.py", line 55, in worker_loop
_job_machine(*job)
File "C:\Python27\lib\site-packages\job_queue\server\jq_worker.py", line 34, in _job_machine
do_verbose_exception()
File "C:\Python27\lib\site-packages\job_queue\server\errors.py", line 23, in do_verbose_exception
txt = cgitb.text(exc_info)
File "C:\Python27\lib\cgitb.py", line 214, in text
formatvalue=lambda value: '=' + pydoc.text.repr(value))
File "C:\Python27\lib\inspect.py", line 885, in formatargvalues
specs.append(strseq(args[i], convert, join))
File "C:\Python27\lib\inspect.py", line 840, in strseq
return convert(object)
File "C:\Python27\lib\inspect.py", line 882, in convert
return formatarg(name) + formatvalue(locals[name])
KeyError: 'connection'
我多次跑代碼這種異常後,卻無法重現。但是,我沒有在文件cgitb.py或inspect.py中找到任何帶有'連接'鍵的字典。
有人會知道這是python的cgitb或inspect文件的問題嗎?任何有用的輸入?
我交叉檢查我的代碼庫,並且在我的代碼庫中沒有 '連接' 對象。實際上,我在碰撞發生後使用相同的上下文來運行它,並且它是成功的。如果你觀察崩潰日誌,第882行顯示'locals [name]',這個崩潰是由於name - >連接。仍然無能爲力,這從何而來。 – Ethan
我已經通過cgitb代碼。即使使用cgitb.enable和日誌目錄名也不能解決這個問題 - 在嘗試解碼由sys.exc_info返回的etraceback時會發生這種情況,這也將在那裏使用。 – Ethan
好的,我想我找到了問題。我使用MySQLdb,引發的異常是使用'defaulthandler'(file:connections.py),在引發錯誤後'connection'被刪除。不知道爲什麼這樣做。不過,我可以繞着'txt = cgitb.text(exc_info)'使用'traceback.format_exception'的異常處理程序來解決這個問題。感謝您的幫助。 – Ethan