PasteDeploy配置文件¶
通过A生成的包 cookiecutter 利用一个由伊恩·比金创建的名为 PasteDeploy . PasteDeploy定义了一种声明 WSGI 应用程序配置 .ini
文件。
金字塔使用此配置文件格式作为其 WSGI 服务器转轮 pserve
以及其他命令,例如 pviews
, pshell
, proutes
和 ptweens
.
PasteDeploy不是金字塔的一个特别组成部分。可以创建一个根本不使用PasteDeploy的金字塔应用程序。我们显示了一个不在中使用PasteDeploy的金字塔应用程序 创建您的第一个 Pyramid 应用 . 但是,金字塔CookiCutter呈现PasteDeploy配置文件,为新开发人员提供设置部署值的标准化方法,并为新用户提供启动、停止和调试应用程序的标准化方法。
本章并不能替代关于pastedeploy的文档;它只将pastedeploy在金字塔中的使用上下文化。有关详细文档,请参阅https://docs.pylonsproject.org/projects/pastedeploy/en/latest/。
PasteDeploy¶
plaster 是金字塔用于从配置文件加载设置的系统。这些文件最常见的格式是 .ini
按定义的方式构造的格式 PasteDeploy . 该格式支持定义wsgi应用程序的机制。 deployment settings ,wsgi服务器设置和日志记录。这允许 pserve
命令工作,允许您轻松停止和启动金字塔应用程序。
入口点和PasteDeploy .ini
文件夹¶
在 创建一个 Pyramid 项目 第章,我们简单介绍了 deployment.ini
文件。这就是 use = egg:myproject
线在 [app:main]
部分。我们对此轻而易举地解释了一下,因为对于系统的介绍来说,它非常混乱,而且“信息太多”。我们在这里尽量引起注意。让我们再次查看配置文件:
1###
2# app configuration
3# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
4###
5
6[app:main]
7use = egg:myproject
8
9pyramid.reload_templates = true
10pyramid.debug_authorization = false
11pyramid.debug_notfound = false
12pyramid.debug_routematch = false
13pyramid.default_locale_name = en
14pyramid.includes =
15 pyramid_debugtoolbar
16
17# By default, the toolbar only appears for clients from IP addresses
18# '127.0.0.1' and '::1'.
19# debugtoolbar.hosts = 127.0.0.1 ::1
20
21###
22# wsgi server configuration
23###
24
25[server:main]
26use = egg:waitress#main
27listen = localhost:6543
28
29###
30# logging configuration
31# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
32###
33
34[loggers]
35keys = root, myproject
36
37[handlers]
38keys = console
39
40[formatters]
41keys = generic
42
43[logger_root]
44level = INFO
45handlers = console
46
47[logger_myproject]
48level = DEBUG
49handlers =
50qualname = myproject
51
52[handler_console]
53class = StreamHandler
54args = (sys.stderr,)
55level = NOTSET
56formatter = generic
57
58[formatter_generic]
59format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
线在 [app:main]
上面说 use = egg:myproject
实际上是较长拼写的缩写: use = egg:myproject#main
. 这个 #main
为了简洁起见省略了部分,如 #main
是由PasteDeploy定义的默认值。 egg:myproject#main
是一个字符串,它具有粘贴部署的含义。它指向一个 Setuptools entry point 已命名 main
定义在 myproject
项目。
看看生成的 setup.py
此项目的文件。
1import os
2
3from setuptools import setup, find_packages
4
5here = os.path.abspath(os.path.dirname(__file__))
6with open(os.path.join(here, 'README.txt')) as f:
7 README = f.read()
8with open(os.path.join(here, 'CHANGES.txt')) as f:
9 CHANGES = f.read()
10
11requires = [
12 'plaster_pastedeploy',
13 'pyramid',
14 'pyramid_jinja2',
15 'pyramid_debugtoolbar',
16 'waitress',
17]
18
19tests_require = [
20 'WebTest',
21 'pytest',
22 'pytest-cov',
23]
24
25setup(
26 name='myproject',
27 version='0.0',
28 description='myproject',
29 long_description=README + '\n\n' + CHANGES,
30 classifiers=[
31 'Programming Language :: Python',
32 'Framework :: Pyramid',
33 'Topic :: Internet :: WWW/HTTP',
34 'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
35 ],
36 author='',
37 author_email='',
38 url='',
39 keywords='web pyramid pylons',
40 packages=find_packages(exclude=['tests']),
41 include_package_data=True,
42 zip_safe=False,
43 extras_require={
44 'testing': tests_require,
45 },
46 install_requires=requires,
47 entry_points={
48 'paste.app_factory': [
49 'main = myproject:main',
50 ],
51 },
52)
注意 entry_points
分配了一个看起来很像 .ini
文件。此字符串表示的 .ini
文件有一个名为的节 [paste.app_factory]
. 在此部分中,有一个名为 main
(入口点名称)具有值 myproject:main
. 这个 key main
是我们的什么 egg:myproject#main
价值观 use
配置文件中的节指向,尽管它实际上被缩短为 egg:myproject
那里。该值表示 dotted Python name 路径,它指的是 myproject
包装的 __init__.py
模块。
这个 egg:
前缀位于 egg:myproject
指示这是一个入口点。 URI 说明符,其中“方案”是“蛋”。安装项目时会创建一个“鸡蛋”。
因此,在英语中,该入口点可以称为“PasteDeploy应用程序工厂” myproject
入口点名为的项目 main
其中入口点指 main
功能在 mypackage
模块“。事实上,如果你打开 __init__.py
在cookiecutter生成的包中生成的模块,您将看到 main
功能。这是由调用的函数 PasteDeploy 当 pserve
对应用程序调用命令。它接受全局配置对象并 收益率 应用程序的实例。
[DEFAULT]
PasteDeploy的部分 .ini
文件¶
您可以添加 [DEFAULT]
部分到您的PasteDeploy .ini
文件。这样的部分应该由所有应用程序、服务器和 middleware 在配置文件中定义。A中的值 [DEFAULT]
部分将传递给您的应用程序 main
函数作为 global_config
(参见参考 main
中的函数 __init__.py )
可选配置文件格式¶
可以使用不同的文件格式 Pyramid 如果你不喜欢 PasteDeploy . 在引擎盖下,所有命令行脚本,如 pserve
和 pshell
通过 config_uri
(例如, development.ini
或 production.ini
) plaster 为适当的分析器执行查找的库。为了 .ini
它使用的文件是pastedeploy,但是您可以注册自己的配置格式,而pastedeploy会找到这些格式。