Bottle高效開發的幾點技巧

2021-07-22 04:52:14 字數 2590 閱讀 1838

你已經學到一些開發基礎,並想寫你自己的應用了吧?這裡有一些

bottle

開發小技巧可提高你的生產力。

預設應用

bottle維護乙個全域性的

bottle

例項的棧,模組層面的函式和修飾器使用棧頂例項作為預設應用。例如 route() 修飾器,相當於在預設應用上面呼叫了 bottle.route() 方法。

@route('/')def hello():

return 'hello world'

run()

對於小應用來說,這樣非常方便,可節約你的工作量。但這同時意味著,在你的模組匯入的時候,你定義的 route 就被安裝到全域性的預設應用中了。為了避免這種模組匯入的***,bottle 提供了另外一種方法,顯式地管理應用:

return 'hello world'

0.13 新版功能.

從 bottle-0.13 開始,你可以使用 bottle 例項作為上下文管理器。

# for all shortcut functions and decorators

@route('/')

def hello():

return 'hello world'

# also useful to capture routes defined in other modules

import some_package.more_routes

除錯模式

在開發的早期階段,除錯模式非常有用。

bottle.debug(true)

在除錯模式下,當錯誤發生的時候,bottle會提供更多的除錯資訊。同時禁用一些可能妨礙你的優化措施,檢查你的錯誤設定。

下面是除錯模式下會發生改變的東西,但這份列表不完整:

預設的錯誤頁面會列印出執行棧。

模板不會被快取。

外掛程式馬上生效。

請確保不要在生產環境中使用除錯模式。

自動載入

在開發的時候,你需要不斷地重啟伺服器來驗證你最新的改動。自動載入功能可以替你做這件事情。在你編輯完乙個模組檔案後,它會自動重啟伺服器程序,載入最新版本的**。

from bottle import runrun(reloader=true)

它的工作原理,主程序不會啟動伺服器,它使用相同的命令列引數,建立乙個子程序來啟動伺服器。請注意,所有模組級別的**都被執行了至少兩次。

子程序中 os.environ['bootle_child'] 變數的值被設為 true ,它執行乙個不會自動載入的伺服器。在**改變後,主程序會終止掉子程序,並建立乙個新的子程序。更改模板檔案不會觸發自動過載,請使用debug模式來禁用模板快取。

自動載入需要終止子程序。如果你執行在windows等不支援 signal.sigint (會在python中raise keyboardinterrupt 異常)的系統上,會使用 signal.sigterm 來殺掉子程序。在子程序被 sigterm 殺掉的時候,exit handlers和finally等語句不會被執行。

命令列介面

從0.10版本開始,你可像乙個命令列工具那樣使用bottle:

$ python -m bottle

options:  -h, --help            show this help message and exit  --version             show version number.  -b address, --bind=address                        bind socket to address.  -s server, --server=server                        use server as backend.  -p plugin, --plugin=plugin                        install additional plugin/s.  -c file, --conf=file  load config values from file.  -c name=value, --param=name=value                        override config values.  --debug               start server in debug mode.  --reload              auto-reload on file changes.

address 引數接受乙個ip位址或ip:埠,其預設為 localhost:8080 。其它引數都很好地自我解釋了。

外掛程式和應用都通過乙個匯入表示式來指定。包含了匯入的路徑(例如: package.module )和模組命名空間內的乙個表示式,兩者用」:」分開。下面是乙個簡單例子,詳見 load() 。

# install a custom debug plugin with some parameterspython -m bottle --debug --reload --plugin 'utils:debugplugin(exc=true)'' test

高效開發的幾點建議

建立開發管理運作管理中心,建立專案管理 開發 測試三國會議協商機制,建立需求 bug更改控制管理流程。開發管理運作管理中心即建立以版本受控庫 每日構建持續整合 需求 缺陷跟蹤系統為基礎支撐軟體開發工具體系。三國會議最早來自微軟。在微軟專案管理 開發 測試人員基本均等。每次專案決策均至少需求三方人員參...

高效開發的6個技巧

高效開發的6個技巧 1.開放 庫,提倡資源共享 在我所管理的每乙個開發團隊裡,都要求開發人員開放各自的開發成果,有用的源 都需要集中存放在cvs 資源庫中,cvs 庫的模組對開發人員全部是開放式的。因為 庫是開發人員智慧型的結晶,看看彼此間的 能提高整體開發水平,特別是對新來的職員,更是乙個非常好的...

大型資料庫的設開發幾點技巧

大型資料庫設計技巧 分類拆分資料量大的表。對於經常使用的表 如某些參數列或 對照表 由於其使用頻率很高,要儘量減少表中的記錄數量。例如,銀行的戶主賬表原來設計成一張表,雖然可以方便程式的設計與維護,但經過分析發現,由於資料量太大,會影響資料的迅速定位。如果將戶主賬表分別設計為活期戶主賬 定期戶主賬及...