【问题标题】:Pyramid gunicorn and waitress金字塔独角兽和女服务员
【发布时间】:2018-03-07 10:22:59
【问题描述】:

我正在尝试了解 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,为什么此配置有效?

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

【问题讨论】:

    标签: python pyramid gunicorn ini waitress


    【解决方案1】:

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

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

    2) 使用哪个 WSGI 服务器。

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

    【讨论】:

    • 感谢您的回答。这或多或少是我得出的结论,除了一件事:即使使用“gunicorn --paste file.ini”我也必须配置一个有效的[main:server] > use,否则金字塔会抱怨(虽然我看到gunicorn没有使用这个信息跑步)。从我的角度来看,这似乎有点不连贯。
    • 是的,看看 gunicorn 代码,它将尝试从该部分读取配置。我实际上认为这是一个错误,它在没有该部分的情况下崩溃。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-20
      • 2011-01-27
      • 1970-01-01
      • 2014-01-15
      • 2012-01-05
      • 1970-01-01
      • 2013-01-10
      • 2012-09-11
      相关资源
      最近更新 更多