Pasteスタート

4636 ワード

この記事のアドレス:http://blog.csdn.net/spch2008/article/details/9005669
PasteはWSGIプログラムとサーバを構成するために使用され、簡単な関数(loadap)を提供して、設定ファイルからWSGIプログラムをロードします。
設定ファイル
設定ファイルには異なるセグメントがあります。Paste Deployは、プレフィックス部分だけに関心を持っています。例えば、(app:main、filter:error)のap、filter。「:」の前はタイプで、後ろはセグメントの名前です。プロファイルは簡単なINI形式のファイルです。通常、設定ファイルには少なくとも1つまたは2つのセグメントがあります。メインセクション:[app:main]アプリケーションセグメント、[server:main]サーバ構成セグメント。[compsite:…]要求を異なるプログラムに配信することを示します。
[composite:main]
use = egg:Paste#urlmap
/ = home
/blog = blog
/wiki = wiki
/cms = config:cms.ini


[filter-app:blog]
use = egg:Authentication#auth
next = blogapp
roles = admin
htpasswd = /home/me/users.htpasswd

[app:blogapp]
use = egg:BlogApp
database = sqlite:/home/me/blog.db

[app:wiki]
use = call:mywiki.main:application
database = sqlite:/home/me/wiki.db
プロファイルの各セグメントの説明:
[composite:main]
use = egg:Paste#urlmap
/ = home
/blog = blog
/cms = config:cms.ini
これはcompossiteセグメントで、要求を異なるプログラムに配信すると表しています。
use=egg:Paste萼mapはurlmapプログラムを使用します。urlmapは、パスプレフィクス(path prefix)を使用して、要求を他のプログラム(home,blog)などにマッピングする。
cmsは、同じディレクトリのcms.iniプロファイルを指している。
[filter-app:blog]
use = egg:Authentication#auth
next = blogapp
roles = admin
htpasswd = /home/me/users.htpasswd
[filter-ap:blog]はfilter機能を持つプログラムを表します。
The egg:Authentication authは実際には存在しませんが、ユーザー登録を記録し、身分認証を行う操作と考えることができます。
roles,httpasswdはパラメータとしてAuthentication関数に入る。
nextは認証後に実行するアプリを表します。
[app:blogapp]
use = egg:BlogApp
database = sqlite:/home/me/blog.db
use=egg:BlogAppはpip installでインストールされたBlogAppプログラムを使用します。
[app:wiki]
use = call:mywiki.main:application
database = sqlite:/home/me/wiki.db
wikiはblogapと似ていますが、唯一の違いはmywiki.main moduleの中のプログラムを直接指しています。eggの中の一つのentry pointではありません。
mywiki.mainモジュールでは、appicationはmainモジュールでの操作です。
簡単な使い方
Pasteの基本的な使い方はWSGIアプリの読み込みに使います。最も主要な関数式paste.deploy.loadapは、与えられたURIのプログラムをロードします。
from paste.deploy import loadapp
wsgi_app = loadapp('config:/path/to/config.ini')
Application
一つのファイルに複数のプログラムを定義することができ、各アプリケーションには独自のセグメントがあります。プログラムは一つでも段に置く必要があります。プログラムを定義するには、セグメント名の前にappプレフィックスを追加する必要があります。例えば、mainは[app:main]です。プログラムが一つしかないなら、セグメント名を省略してもいいです。直接に「app」という二つの方法で一つのプログラムを宣言します。一つは他のURIまたはnameを指すことです。
[app:myapp]
use = config:another_config_file.ini#app_name

# or any URI:
[app:myotherapp]
use = egg:MyApp

# or a callable from a module:
[app:mythirdapp]
use = call:my.project:myapplication

# or even another section:
[app:mylastapp]
use = myotherapp
もう一つの方法はPythonコードを完全に指す。
[app:myapp]
paste.app_factory = myapp.modulename:app_factory
mypp.modulenameモジュールをロードして、中からapp_を検索します。ファクトリーオブジェクト
Compsite Application s
「Compsite」アプリは一連のプログラムで構成されています。一つの使い方はURL mapperであり、URLを異なるプログラムにマッピングする。
[composite:main]
use = egg:Paste#urlmap
/ = mainapp
/files = staticapp

[app:mainapp]
use = egg:MyApp

[app:staticapp]
use = egg:Paste#static
document_root = /path/to/docroot
compsite appration「main」は他のプログラムのようにloadapでロードできますが、設定ファイルで定義されている他のプログラムにアクセスできます。
Filter Compsition
複数のfilterを定義し、それらの実施順序を制御することができる。
[app:main]
use = egg:MyEgg
filter-with = printdebug

[filter:printdebug]
use = egg:Paste#printdebug
# and you could have another filter-with here, and so on...
MyEggを実行する前に、printdebugを実行します。
また、filter-ap、pipelineのような二つのタイプがあります。
[composite:main]
use = egg:Paste#urlmap
/ = home
/blog = blog
/wiki = wiki
/cms = config:cms.ini


[filter-app:blog]
use = egg:Authentication#auth
next = blogapp
roles = admin
htpasswd = /home/me/users.htpasswd

[app:blogapp]
use = egg:BlogApp
database = sqlite:/home/me/blog.db
は「/blog」に合わせて、ブログというfilter-apセグメントを呼び出します。Authenticationを用いてアイデンティティ検証を行う。
次にキーワードnextを通じて、次のステップが実行されるアプリ、すなわちblogapを指定します。blogapを実行する前に、filterが実行されました。
[pipeline:main]
pipeline = filter1 filter2 filter3 app

[filter:filter1]
...
pipeline:複数のfilterが必要な場合、pipelineはグループfiltersであり、プログラムの最後に該当します。pipelineはどのappに属しますか?
Defining Factores
以下のいくつかの契約があります。paste.ap_factory,paste.com mposite_factory,paste.filter_factory,and lastly paste.server_factory.それらはいずれも一つのコールバック関数または方法またはクラスが必要です。例:
paste.ap_factory定義のコールバック関数
def app_factory(global_config, **local_conf):
    return wsgi_app
global_configは1つの辞書で全体構成されていますが、local configrationはlocal_に転送されます。confでは、この関数はWSGIプログラムを返します。