金字塔枪和女服务员

时间:2017-09-26 09:11:59

标签: python pyramid gunicorn ini waitress

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

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

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

现在,$ pserve development.ini将使用女服务员启动项目,这是预期的。但是如果我使用命令$ gunicorn(在ini文件中使用gunicorn或者女服务员)它也会起作用,这是我不期望的。

我的问题是:

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

  • 钩子下发生了什么?女服务员在工作吗? (我会说它不符合我电脑中的流程)

2 个答案:

答案 0 :(得分:2)

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

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

2)使用哪个WSGI服务器。

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

答案 1 :(得分:0)

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

  • 使用B$action_type <- "" for (i in 1:nrow(A)) { B$action_type <- ifelse(B$action_type == "", ifelse(grepl(A$action_text_variation[i], B$action_name, ignore.case = TRUE), A$action_taken[i], ""), B$action_type) } 对于金字塔应用程序是必需的
  • 如果您使用gunicorn运行应用程序,则必须定义此[main:server]
  • gunicorn会忽略[main:server]属性,但金字塔会检查蛋存在
  • gunicorn将使用其余设置(如果有),但它们的优先级低于命令行参数或config.py文件

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