def run(app=None, server='wsgiref', host='127.0.0.1', port=8080, interval=1, reloader=False, quiet=False, plugins=None, debug=None, **kargs):
今天要學習一下bottle里是怎樣打印debug信息的
成都創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站建設、網(wǎng)站設計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元白銀做網(wǎng)站,已為上家服務,為白銀各地企業(yè)和個人服務,聯(lián)系電話:18980820575run函數(shù)的倒數(shù)第二個參數(shù)是debug,默認為None
try: if debug is not None: _debug(debug)
如果設置了debug的值,且不為None,則運行_debug函數(shù)
_debug = debug
_debug函數(shù)是debug函數(shù)的別名,因為和run里的debug變量同名,為了區(qū)別,所以用_debug這個名稱
def debug(mode=True): """ Change the debug level. There is only one debug level supported at the moment.""" global DEBUG if mode: warnings.simplefilter('default') DEBUG = bool(mode)
globa DEBUG這句的作用是聲明DEBUG這個變量是全局變量,由于要修改它的值,如果不聲明為全局變量,則會將DEBUG定義為本函數(shù)內(nèi)的局部變量。
if mode: warnings.simplefilter('default')
warnings.simplefilter定義簡單過濾器,如果mode為真,則warnings的過濾器為default,以下是幾種過濾器參數(shù),特別要說明的是error過濾器,如果應用了這個過濾器,一旦產(chǎn)生警告信息,則當成錯誤來處理,不再執(zhí)行后面的語句。
Value | Disposition |
---|---|
"error" | turn matching warnings into exceptions |
"ignore" | never print matching warnings |
"always" | always print matching warnings |
"default" | print the first occurrence of matching warnings for each location where the warning is issued |
"module" | print the first occurrence of matching warnings for each module where the warning is issued |
"once" | print only the first occurrence of matching warnings, regardless of location |
好了,大概用法已經(jīng)看懂,再看bottle是怎樣應用的
# -*- coding=utf-8 -*- from bottle import Bottle, run app = Bottle() @app.route('/hello') def hello(): raise Exception("this is my error") return "Hello World!" run(app, host='localhost', port=8080, reloader=True, debug=True)
將debug設置為True, 并在hello函數(shù)里手工制造一個異常。
瀏覽器里訪問http://localhost:8080/hello
結果如下:
Sorry, the requested URL 'http://localhost:8080/hello' caused an error:
Internal Server Error
Exception('this is my error',)
Traceback (most recent call last): File "C:\Python27\lib\site-packages\bottle.py", line 862, in _handle return route.call(**args) File "C:\Python27\lib\site-packages\bottle.py", line 1740, in wrapper rv = callback(*a, **ka) File "D:/myproject/bottleApp/main.py", line 8, in hello raise Exception("this is my error") Exception: this is my error
看模板源碼是怎樣設置的
Error: `e`.`status`
Sorry, the requested URL {{repr(request.url)}} caused an error:
`e`.`body`%%if DEBUG and e.exception:Exception:
{{repr(e.exception)}}%%end %%if DEBUG and e.traceback:Traceback:
`e`.`traceback`%%end
注:如果debug=False,則不會輸出Traceback信息,生產(chǎn)環(huán)境一般是要關閉的,開發(fā)的時候打開方便排錯。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。