paste deploy 解說和使用

2021-09-03 07:56:12 字數 3226 閱讀 5791

# 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...