5

我试图了解 Pyramid 关于[main:server]配置和 gunicorn 的行为。

如果我使用pserve,它将使用 , 的配置[main:server],用于服务员和 gunicorn。例如:

# development.ini 
[server:main]
use = egg:waitress#main
listen = *:6543

所以现在,$ pserve development.ini将与女服务员一起启动项目,这是意料之中的。但是,如果我使用该命令$ gunicorn(在 ini 文件中使用 gunicorn 或 waitress),它也可以正常工作,这不是我所期望的。

我的问题是:

  • 如果我运行命令,为什么此配置有效$ gunicorn --paste development.ini

  • 发生了什么?女服务员在工作吗?(我会说这不是根据我电脑中的流程)

4

2 回答 2

3

开始为任何 WSGI 应用程序服务请求需要两个独立的配置。

1) 使用哪个 WSGI 应用程序。

2) 使用哪个 WSGI 服务器。

这些部分是单独处理的,可以根据您的设置方式以不同的方式完成。ini 文件格式由 PasteDeploy 库定义,并为格式的使用者提供了一种确定应用程序配置和服务器配置的方法。但是,在使用时,gunicorn --paste foo.ini您已经告诉 gunicorn 您要使用 gunicorn 服务器(而不是女服务员),因此它会忽略服务器部分并仅专注于加载应用程序。Gunicorn 实际上还有其他加载应用程序的方法,但我暂时忽略这种复杂性,因为这部分对你有用。gunicorn 的任何服务器配置都需要单独完成......当您从 cli[server:main]运行时,它不会读取该部分。gunicorn或者,您可以使用pservewhich启动您的应用程序使用 server 部分来确定要使用的服务器 - 但在您当前的设置中,它将运行 waitress 而不是 gunicorn。

于 2017-09-26T23:10:48.287 回答
1

因此,经过大量阅读和测试,我不得不得出以下结论:

  • [main:server]金字塔应用程序必须使用
  • 如果您使用 gunicorn 运行应用程序,则必须定义[main:server]
  • gunicorn 将忽略该use属性,但金字塔会检查鸡蛋是否存在
  • gunicorn 将使用其余设置(如果有),但它们的优先级低于命令行参数或 config.py 文件

这种行为背后的原因仍然让我感到困惑,但至少我可以使用它。任何其他提示将不胜感激。

于 2017-09-26T12:46:09.170 回答