在下面的示例代碼中,我打算獲取裝飾函數的被調用者的堆棧幀。假設,裝飾函數power(below)調用pwr函數,並且有一個例外,我想爲pwr獲取堆棧框架(打印函數參數)。對於在API中暴露的函數,它的參數和響應是打印出來的,但是模塊內部的函數和api調用的函數,我希望得到這些堆棧幀。在異常情況下獲取函數的堆棧幀
import inspect
def api(func):
def decor(*args, **kwargs):
try:
print "Request %s %s %s" % (func.__name__, args, kwargs)
response = func(*args,**kwargs)
print "response %s", response
return response
except Exception, e:
print "exception in %s", func.__name__
for frame in inspect.stack():
print frame[3]
raise e
return decor
@api
def power(a,b):
return pwr(a,b)
def pwr():
...
...
當我運行代碼,在例外期間,我從裝飾和up但不是func或更低的堆棧幀。任何人都可以建議
由於@bereal,我想我有與滿足。 – Neil 2013-05-14 07:03:30