(機械翻訳) PasteDeploy設定ファイル

:term: cookiecutter`で生成されるパッケージは、Ian Bickingが作成したterm: PasteDeploy`という名前のシステムを利用します。 PasteDeployは、term: WSGI`アプリケーションの設定を .ini`ファイルに宣言する方法を定義します。

Pyramidはこの設定ファイル形式を:term: WSGI`サーバランナー pserve``や pviews`、` pshell`、` proutes``などの他のコマンドの入力として使います。 ` ptweens``。

PasteDeployは特にPyramidの不可欠な部分ではありません。 PasteDeployをまったく使用しないPyramidアプリケーションを作成することは可能です。 ref: `firstapp_chapter`にPasteDeployを使用しないPyramidアプリケーションを示します。ただし、すべてのPyramid cookiecuttersはPasteDeploy設定ファイルをレンダリングし、新しい開発者にデプロイメント値を設定する標準的な方法を提供し、新しいユーザーに標準化されたアプリケーションの起動、停止、およびデバッグ方法を提供します。

この章は、PasteDeployに関するドキュメントの代わりではありません。ピラミッド内でのPasteDeployの使用のみをコンテキスト化します。詳細なドキュメントについては、https://pastedeploy.readthedocs.io/en/latest/を参照してください。

PasteDeploy

:term: plaster`はPyramidが設定ファイルから設定をロードするために使用するシステムです。これらのファイルの最も一般的なフォーマットは、term: `PasteDeploy`によって定義された方法で構造化された .ini``フォーマットです。このフォーマットは、WSGI app:term: `デプロイメント設定 '、WSGIサーバーの設定とロギングを定義するメカニズムをサポートしています。これにより、 ` pserve``コマンドが機能し、Pyramidアプリケーションを簡単に停止して起動することができます。

エントリポイントとPasteDeployの `` .ini``ファイル

:ref: project_narr`の章では、 deployment.ini``ファイル内の設定行の意味を説明しています。これは ` [app:main] ``セクションの `` use = egg:myproject``行です。私たちはそれをあまりにも混乱させてしまいました。システムに導入するには "あまりにも多くの情報"が必要でした。私たちはここで少し注意を払うようにします。 configファイルをもう一度見てみましょう:

 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

上記の `` [app:main] ``の `` use = egg:myproject``という行は、実際には `` use = egg:myproject#main``という長いスペルの省略形です。 ``#main``はPasteDeployで定義されたデフォルトであるため、簡潔にするために省略されています。 `` egg:myproject#main``は、PasteDeployの意味を持つ文字列です。 `` myproject``プロジェクトで定義されている `` main``と呼ばれる:term: setuptools:term:` entry point`を指します。

このプロジェクト用に生成された `` setup.py``ファイルを見てください。

 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
import os

from setuptools import setup, find_packages

here = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(here, 'README.txt')) as f:
    README = f.read()
with open(os.path.join(here, 'CHANGES.txt')) as f:
    CHANGES = f.read()

requires = [
    'plaster_pastedeploy',
    'pyramid',
    'pyramid_jinja2',
    'pyramid_debugtoolbar',
    'waitress',
]

tests_require = [
    'WebTest >= 1.3.1',  # py3 compat
    'pytest',
    'pytest-cov',
]

setup(
    name='myproject',
    version='0.0',
    description='MyProject',
    long_description=README + '\n\n' + CHANGES,
    classifiers=[
        'Programming Language :: Python',
        'Framework :: Pyramid',
        'Topic :: Internet :: WWW/HTTP',
        'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
    ],
    author='',
    author_email='',
    url='',
    keywords='web pyramid pylons',
    packages=find_packages(),
    include_package_data=True,
    zip_safe=False,
    extras_require={
        'testing': tests_require,
    },
    install_requires=requires,
    entry_points={
        'paste.app_factory': [
            'main = myproject:main',
        ],
    },
)

`` entry_points``には `` .ini``ファイルのような文字列が割り当てられています。 `` .ini``ファイルのこの文字列表現は `` [paste.app_factory] ​​``という名前のセクションを持っています。このセクションの中には、 `` myproject:main``という値を持つ `` main``(エントリポイント名)という名前のキーがあります。 * key * `` main``は、設定ファイルの `` use``セクションの `` egg:myproject#main``値が `` egg:myproject``に短縮されていますが、そこに。この値は:term: dotted Python name`パスを表します。これは、 myproject``パッケージの `__init __。py``モジュールで呼び出し可能なものを参照します。

`` egg:myproject``の `` egg: ``接頭辞は、これがエントリーポイント* URI *指定子であることを示します。ここで、 "scheme"は "egg"です。あなたのプロジェクト内で `` setup.py install``や `` setup.py develop``を実行すると、 "egg"が作成されます。

英語では、このエントリーポイントは `` myproject``プロジェクトのPasteDeployアプリケーションファクトリと呼ばれ、 `` main``という名前のエントリポイントを持ちます。エントリポイントは `` main``関数を参照します`` mypackage``モジュール"にあります。実際、coo​​kiecutterで生成されたパッケージ内で生成された `` __init __。py``モジュールを開くと、 `` main``関数が表示されます。これは、アプリケーションに対して `` pserve``コマンドが呼び出されたときにterm: `PasteDeploy`によって呼び出される関数です。グローバルコンフィグレーションオブジェクトを受け入れ、*アプリケーションのインスタンスを返します。

`` [DEFAULT] `` PasteDeploy `` .ini``ファイルのセクション

PasteDeployの `` .ini``ファイルに `` [DEFAULT] ``セクションを追加することができます。そのようなセクションは、すべてのアプリケーション、サーバー、および:term:ミドルウェアによって共有されるグローバルパラメーターで構成されていなければなりません。 `` [DEFAULT] ``セクションの値はアプリケーションの `` main``関数に `` global_config``として渡されます(:ref: init_py`の `main``関数参照) 。

代替構成ファイル形式

あなたが好きでない場合は:app: Pyramid`を使って異なるファイル形式を使うことができます:term: PasteDeploy`。フードの下では、 `` pserve``や `` pshell``のようなコマンドラインスクリプトは、 `` development.ini``や `` production.ini``などの `` config_uri``を:termに渡します:適切なパーサーを検索する plaster`ライブラリ。 ` .ini``ファイルの場合、PasteDeployを使用しますが、代わりにplasterが見つける独自の設定フォーマットを登録することができます。