(機械翻訳) 起動¶
:app: `Pyramid`アプリケーションをコンソールウィンドウで起動させると、コンソールに次のように表示されます:
$ $VENV/bin/pserve development.ini
Starting server in PID 16305.
Serving on http://localhost:6543
Serving on http://localhost:6543
この章では、 `` pserve development.ini``とタイプした後にキーボードの"Return "キーを押してから `` Serving on http:// localhost:6543``という行が出力されるまであなたのコンソールに。
スタートアッププロセス¶
a:app: Pyramid`アプリケーションを起動して提供する最も簡単で最良の方法は:term: PasteDeploy` `` .ini``ファイルに対して `` pserve``コマンドを使うことです。これは、 `` .ini``ファイルを使用して設定を推測し、ポートでリッスンするサーバを起動します。ここでは、このコマンドを使って:app: `Pyramid`アプリケーションを実行していると仮定します。
ここでは、 `` pserve development.ini``を実行した後に `` return``を押すと何が起きるのかを、時間順にまとめた高レベルの概要を示します。
`` pserve``コマンドはあなたのシェルの下で引数 `` development.ini``で呼び出されます。その結果、Pyramidは `` development.ini``ファイルに含まれる情報を使ってアプリケーションを実行して提供することを意味することを認識しています。
`` pserve``は `` development.ini``パスを:term: plaster`に渡します。これは `ini``フォーマットを認識する利用可能な設定ローダを見つけます。
:term: plaster`は:term: PasteDeploy`ライブラリをバインドし、フォーマットを理解できるパーサを返してくれる `` plaster_pastedeploy``ライブラリを見つけます。
:term: PasteDeploy`は、 .ini``に [app:main] 、 [pipeline:main] 、 [composite:main]ファイル。このセクションは、提供される:term: `WSGI`アプリケーションの構成を表します。単純なアプリケーション( ` [app:main]
など)を使用している場合、アプリケーションの `` paste.app_factory
:term: entry point`は use = セクションの構成内にあります。単純なアプリケーションではなく、WSGI:term: `pipeline`(例えば [pipeline:main] セクション)を使用している場合、" last "要素に指定されたアプリケーションはあなたの:app: `Pyramid`アプリケーション。単純なアプリケーションやパイプラインの代わりに、"composite "(例えば、 ` [composite:main] ``)を使用している場合は、その特定の複合体のドキュメントを参照して、あなたの:app: Pyramid`アプリケーション。ほとんどの場合、cookiecutterから作成されたPyramidアプリケーションには、単一の `[app:main] `セクションがあり、これは提供されるアプリケーションになります。このフレームワークは、 `` .ini``ファイル内のall:mod: `logging`関連の設定を見つけ、それを使ってこのアプリケーションのPython標準ライブラリロギングシステムを設定します。詳細は、:ref: `logging_config`を参照してください。
:app: Pyramid`アプリケーションを表すセクションの use = 行で参照されるエントリポイントによって指定されたアプリケーションの*コンストラクタ*は、定義されているセクション内で言及されているkey / valueパラメータに渡されます。コンストラクタは:term: `router`インスタンスを返します。これは、:term: WSGI`アプリケーションです。
:app: Pyramid`アプリケーションの場合、コンストラクタはあなたのアプリケーションが存在する:term: package`内の `` __init __。py``ファイルの `` main``という名前の関数になります。この関数が成功すると、:app: Pyramid:term:` router`インスタンスを返します。以下は `` __init __。py``モジュールの例です:
1 2 3 4 5 6 7 8 9 10 11 12
from pyramid.config import Configurator def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ config = Configurator(settings=settings) config.include('pyramid_jinja2') config.add_static_view('static', 'static', cache_max_age=3600) config.add_route('home', '/') config.scan() return config.make_wsgi_app()
コンストラクタ関数は、 `` .ini``ファイルの `` [DEFAULT] ``セクションで述べられているキーと値のペアの辞書である `` global_config``引数を受け入れます(if:ref: [デフォルト] <defaults_section_of_pastedeploy_file> `存在している)。また、 ` ** settings``引数を受け取ります。この引数は、別のキー/値の組を集めます。この関数が `` ** settings``で受け取った任意のキーと値のペアは、 `` [app:main] ``セクションにあるすべてのキーと値のペアで構成されます( `` use = ``設定) `` pserve``を実行したときにこの関数が呼び出されたときに発生します。
生成された `` development.ini``ファイルは次のようになります:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
### # app configuration # https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html ### [app:main] use = egg:myproject pyramid.reload_templates = true pyramid.debug_authorization = false pyramid.debug_notfound = false pyramid.debug_routematch = false pyramid.default_locale_name = en pyramid.includes = pyramid_debugtoolbar # By default, the toolbar only appears for clients from IP addresses # '127.0.0.1' and '::1'. # debugtoolbar.hosts = 127.0.0.1 ::1 ### # wsgi server configuration ### [server:main] use = egg:waitress#main listen = localhost:6543 ### # logging configuration # https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html ### [loggers] keys = root, myproject [handlers] keys = console [formatters] keys = generic [logger_root] level = INFO handlers = console [logger_myproject] level = DEBUG handlers = qualname = myproject [handler_console] class = StreamHandler args = (sys.stderr,) level = NOTSET formatter = generic [formatter_generic] format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
この場合、エントリーポイントURIの詳細については、エントリーポイントのURI「egg:myproject」(ref: myproject_ini`を参照してください)とそれらがどのように関連しているかを参照する `myproject .__ init __:main``関数pyramid.debug_authorization = false、pyramid.debug_notfound = false、pyramid.debug_routematch = false、pyramid.default_locale_name = en、pyramid.includes = pyramid_debugtoolbar}のキーと値のペアを受け取ります。 `。これらのキーの意味については:ref: `environment_chapter`を参照してください。
`` main``関数は最初にclass: 〜pyramid.config.Configurator`インスタンスを構築し、 settings` kwargを使って` settings``引数として取り込んだ `settings``辞書を渡します。
`` settings``辞書には、.iniファイルの `` [app:main] ``セクションのすべてのオプションが含まれています( `` pyramid.reload_templates ``、 `` pyramid.debug_authorization``など
`` main``関数は、前のステップで作成したclass: 〜pyramid.config.Configurator`というクラスのインスタンスに対してさまざまなメソッドを呼び出します。これらのメソッドを呼び出す意図は、アプリケーションに関連する:app: `Pyramid`設定を表す:term: application registry`です。
:meth: `〜pyramid.config.Configurator.make_wsgi_app`メソッドが呼び出されます。結果は:term: `router`インスタンスです。ルータはコンフィグレータに対して実行される他のメソッドによって以前に設定されたコンフィグレータによって暗示される:term: `アプリケーションレジストリ 'に関連付けられます。ルータはWSGIアプリケーションです。
An:class: 〜pyramid.events.ApplicationCreated`イベントが送出されます(イベントの詳細については:ref: events_chapter`を参照してください)。
エラーがないと仮定すると、 `` myproject``の `` main``関数は:meth: pyramid.config.Configurator.make_wsgi_app`で作成されたルータインスタンスを pserve``に戻します。 ` pserve``に関する限り、それは"ただ一つのWSGIアプリケーション"です。
`` pserve``は `` [server:main]
セクションで定義されたWSGI *サーバ*を起動します。私たちの場合、これはウェイトレスサーバー( `` use = egg:waitress#main
)で、ポート6543のすべてのインターフェイスでIPv4とIPv6( `` listen = localhost:6543``)を待ち受けます。サーバコード自体は、 `` http:// localhost:6543でサーブする ''というものを表示します。サーバーがアプリケーションにサービスを提供し、アプリケーションが実行され、要求の受信を待機しています。
展開設定¶
:class: 〜pyramid.config.Configurator`コンストラクタに ** settings``として渡された値の拡張バージョンは、app: Pyramid`:term: view callable`というコードで利用できることに注意してください。 ` request.registry.settings``です。後でビューコードからアクセスしたいオブジェクトを作成し、それをコンフィグレータに渡す辞書に `` settings``として入れることができます。それらはアプリケーション実行時に `` request.registry.settings``ディクショナリに存在します。