2017-09-26 101 views
4

我想了解金字塔關於[main:server]配置和gunicorn的行爲。金字塔gunicorn和女服務員

如果我使用pserve,它將使用[main:server]的配置,用於服務員和gunicorn。例如:

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

所以,現在,$ pserve development.ini將推出與女服務員的項目,該項目預計。但是,如果我使用命令$ gunicorn(在ini文件中帶有gunicorn或女服務員),它也可以工作,這是我不期望的。

我的問題是:

  • 爲什麼會發生這種配置工作,如果我運行命令$ gunicorn --paste development.ini

  • 下鉤會發生什麼?女服務員在工作嗎? (我會說這是不是按照我的電腦的過程)

回答

0

因此,大量的閱讀和測試後,我不得不得出結論是:使用[main:server]

  • 是強制性的金字塔應用
  • 如果您正在使用gunicorn的應用程序,你必須定義這個[main:server]不過
  • gunicorn將忽略use屬性,但金字塔將檢查卵子存在
  • gunicorn將使用的其他設置(如果有的話),但他們會比命令行參數較少的優先級或config.py文件

這種行爲背後的原因仍撲朔迷離給我,但在至少我可以使用它。任何其他提示將非常感激。

2

有兩個獨立的配置需要開始爲任何WSGI應用程序提供服務請求。

1)使用哪個WSGI應用程序。

2)使用哪個WSGI服務器。

這些部分是分開處理的,可以根據您的設置以不同的方式完成。 ini文件格式由PasteDeploy庫定義,併爲格式使用者提供了一種方式來確定應用配置和服務器配置。但是,在使用gunicorn --paste foo.ini時,您已經告訴gunicorn您要使用gunicorn服務器(而不是女服務員),因此它忽略了服務器部分並只專注於加載應用程序。 Gunicorn實際上也有其他的方式來加載應用程序,但是現在我會忽略這個複雜性,因爲那個部分正在爲你工作。任何配置gunicorn的服務器都需要單獨完成......當您從cli運行gunicorn時,它不會讀取[server:main]部分。或者,您可以使用pserve開始您的應用程序確實使用服務器部分來確定要使用哪個服務器 - 但在您當前的設置將運行女服務員,而不是gunicorn。

+0

謝謝你的回答。這或多或少是我總結的,除了一件事情:即使使用「gunicorn - 膏體文件」。ini「我必須配置一個有效的'[main:server]> use',否則金字塔會抱怨(雖然我看到gunicorn沒有使用這些信息來運行),這似乎與我的觀點有點不一致。 – yami

+0

是的,看着gunicorn的代碼,它會嘗試從該部分讀取配置。我實際上認爲這是一個錯誤,它沒有該部分崩潰。 –