Python 金字塔角和女服务员

Python 金字塔角和女服务员,python,pyramid,gunicorn,ini,waitress,Python,Pyramid,Gunicorn,Ini,Waitress,我试图了解Pyramid关于[main:server]配置和gunicorn的行为 如果我使用pserve,它将使用[main:server]的配置,用于女服务员和gunicorn。例如: # development.ini [server:main] use = egg:waitress#main listen = *:6543 现在,$pserve development.ini将与waitess一起启动该项目,这是预期的。但是如果我使用命令$gunicorn(ini文件中有gunico

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

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

# development.ini 
[server:main]
use = egg:waitress#main
listen = *:6543
现在,
$pserve development.ini
将与waitess一起启动该项目,这是预期的。但是如果我使用命令
$gunicorn
(ini文件中有gunicorn或waitress),它也会工作,这是我所不希望的

我的问题是:

  • 如果我运行命令
    $gunicorn--paste development.ini
    ,为什么这个配置会起作用

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


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

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

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

开始为任何WSGI应用程序提供请求时,需要两个独立的配置

1) 使用哪个WSGI应用程序

2) 使用哪个WSGI服务器


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

感谢您的回答。这或多或少是我得出的结论,除了一件事:即使使用“gunicorn--paste file.ini”,我也必须配置一个有效的
[main:server]>使用
,否则pyramid会抱怨(尽管我看到gunicorn没有使用此信息来运行)。从我的观点来看,这似乎有点不连贯。是的,查看gunicorn代码,它将尝试从该部分读取配置。我真的认为这是一个错误,没有那部分崩溃。