# pip install pastedeploy
既然pastedeploy是用來配置和管理wsgi 應用的,不妨首先看一下pastedeploy配置檔案的格式。
pastedeploy配置檔案由若干section組成,section的宣告格式如下:
每個section中具體配置項的格式就是基本的ini格式:key = value,此外,pastedeploy的配置檔案中使用「#」標註注釋。
在基本了解pastedeploy配置檔案的書寫格式後,我們不妨看乙個例項,來具體了解不同type的section。
示例1:pastedeploy配置檔案
[composite:main]
use = egg:paste#urlmap
/ = home
/blog = blog
/wiki = wiki
/cms = config:cms.ini
use = egg:paste#static
document_root = %(here)s/htdocs
database = sqlite:/home/me/wiki.db
use = egg:authentication#auth
roles = admin
htpasswd = /home/me/users.htpasswd
database = sqlite:/home/me/blog.db
use = egg:myegg
filter-with = printdebug
[filter:printdebug]
use = egg:paste#printdebug
[pipeline:main]
上面的示例檔案列出了若干不同type的section示意,下面就一一**pastedeploy可定義的section type.
顧名思義,組合應用由若干wsgi應用組成,composite為這些應用提供更高一層的分配工作。
我們具體分析示例1中的如下部分:
[composite:main]
use = egg:paste#urlmap
/ = home
/blog = blog
/wiki = wiki
/cms = config:cms.ini
該段配置檔案定義了乙個名為main、型別為composite的section,方括號的宣告以下是該section的具體配置,遵循 key = value 的統一格式。
composite型別的section將url請求分配給其他的wsgi應用。
use = egg:paste#urlmap 意味著使用 paste 包中的 urlmap 應用。urlmap是paste提供的一套通用的composite應用,作用就是根據使用者請求的url字首,將使用者請求對映到對應的wsgi應用上去。這裡的wsgi應用有:「home」, 「blog」, 「wiki」 和 「config:cms.ini」。
最後一項僅僅是參考了同乙個目錄中的另乙個檔案"cms.ini"
use = egg:paste#static
document_root = %(here)s/htdocs
database = sqlite:/home/me/wiki.db
採用該方法的特點是指出應用的實現**的那一條 key = value 配置項採用"use"作為鍵,該方法也有許多變種,官方的示例中給出了一些介紹:
# 或任意uri:
# 或指明某個模組中的可呼叫:
# 甚至是其他的section:
採用該方法的特點是指出實現**的那一條 key = value 配置項採用「協議」作為鍵,所謂「協議」即protocol,告訴pastedeploy即將載入的物件型別,如:
use = egg:myegg
filter-with = printdebug
[filter:printdebug]
use = egg:paste#printdebug
use = egg:authentication#auth
roles = admin
htpasswd = /home/me/users.htpasswd
database = sqlite:/home/me/blog.db
pipeline便於對乙個應用新增多個過濾器,比如示例1中:
[pipeline:main]
pastedeploy配置檔案的所有配置項均使用 key = value 格式,但是區域性配置項和全域性配置項定義的位置不同。如:
use = egg:myblog
database = mysql://localhost/blogdb
blogname = this is my blog!
use = blog
blogname = the other face of my blog
每乙個section內設定具體的鍵值關係,構成這些section自己的區域性配置。
為了便於不同的應用讀取某些固定的系統資訊,pastedeploy允許設定全域性配置變數,所有的全域性配置必須放在[default]欄位下設定,如:
[default]
admin_email = [email protected]
use = ...
set admin_email = [email protected]
注意[default]段名是大小寫敏感的,因此必須嚴格大寫。
3.1中的兩個例子,實際上展示了區域性配置和全域性配置的覆寫,這裡詳細介紹,首先看區域性配置的覆寫:
use = egg:myblog
database = mysql://localhost/blogdb
blogname = this is my blog!
use = blog
blogname = the other face of my blog
[default]
admin_email = [email protected]
use = ...
set admin_email = [email protected]
只需要在要覆寫的鍵前加 set 即可。
至於為什麼要**區域性配置與全域性配置,是因為二者在傳遞給不同型別的factory function時對應的引數不同,這些將在下文詳細**。
解說設計模式
最近兩年,模式已經成為軟體專案團體裡最熱門的話題之一。模式的概念裡最最早由建築大師christopher alexander提出,他說 每個模式都描述了乙個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需再重複相同工作。模式的定...
event詳細解說
event代表事件的狀態,例如觸發event物件的元素 滑鼠的位置及狀態 按下的鍵等等。event物件只在事件發生的過程中才有效。event的某些屬性只對特定的事件有意義。比如,fromelement 和 toelement 屬性只對 onmouseover 和 onmouseout 事件有意義。例...
詳細解說sizeof
50公尺的 http www.50mi.net開張了,所以50公尺邀請我給他寫點什麼。說實在的,作為乙個資深的潛水員,我還真沒動筆寫過什麼東西,所以絞盡腦汁也沒想起來能寫什麼的。不過鑑於50公尺喜歡在小孩子面前臭屁的,就寫一篇群裡討論很多的sizeof問題吧。1 什麼是sizeof 首先看一下siz...