2017-09-26 10 views
4

私は[main:server]設定とgunicornに関するピラミッドの動作を理解しようとしています。ピラミッドgunicornとウェイトレス

私がpserveを使用している場合、ウェイトレスとガンコーンの両方に[main:server]の設定が使用されます。たとえば:だから今

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

$ pserve development.iniが期待されているウェイトレスとのプロジェクトを起動します。しかし、コマンド $ gunicorn(iniファイルにgunicornまたはwaitressを付けて)を使うと、うまくいくでしょう。

私の質問は以下のとおりです。私は、コマンド$ gunicorn --paste development.iniを実行した場合

  • はなぜこの構成に動作しますか?

  • フックの下ではどうなりますか?ウェイトレスは働いていますか?だから、

答えて

0

を、読書やテストの多くの後、私はそれを締結する必要がある(私はそれが私のコンピュータでのプロセスに従っていないと言うでしょう):[main:server]を使用して

  • はピラミッドアプリケーションに必須です
  • あなたはgunicornでアプリケーションを実行している場合、あなたはこの[main:server]それにもかかわらず
  • gunicornを定義する必要がuse属性を無視しますが、ピラミッドは卵が存在するチェックします
  • (もしあれば)
  • gunicornは、残りの設定を使用しますが、彼らはこの行動の背後にある理由は、まだ私には混乱が、でているコマンドライン引数またはconfig.pyファイル

未満の優先順位を持つことになります少なくとも私はそれを扱うことができます。他のヒントは非常に高く評価されます。

2

任意のWSGIアプリケーションの要求を処理するためには、2つの独立した構成が必要です。

1)使用するWSGIアプリケーション。

2)使用するWSGIサーバー。

これらの部分は別々に処理され、設定方法によってさまざまな方法で実行できます。 iniファイル形式はPasteDeployライブラリによって定義され、フォーマットのコンシューマがapp configとserver configの両方を判断する方法を提供します。しかし、gunicorn --paste foo.iniを使用している場合は、すでにガーコンンを伝えているので、サーバーセクションを無視してアプリケーションのロードにのみ焦点を当てるように、ガーディコン製サーバー(ウェイトレスではない)を使用したいと考えています。 Gunicornには実際にアプリを読み込むための他の方法もありますが、その部分はあなたのために働いているので、今はその複雑さを無視します。 gunicornのサーバー設定は別に行う必要があります... gunicornをcliから実行すると、[server:main]セクションが読み込まれません。代わりに、pserveを使用してアプリを起動することもできます。です。どのサーバーを使用するかを決定するためにサーバーセクションを使用しますが、現在の設定ではgunicornの代わりにウェイトレスを実行します。

+0

ありがとうございます。それは多かれ少なかれ私は結論を出しましたが、1つのことを除いて:たとえ "gunicorn - pasteファイル"を使用しても。ini "有効な' '[main:server]> use''を設定する必要があります。そうしないとピラミッドが文句を言うでしょう(私はgunicornがこの情報を使っていないことを知っていますが)。 – yami

+0

はい、そのセクションからconfigを読み込もうとしているgunicornコードを見て、私は実際には、このセクションがなければクラッシュするバグだと考えていました。 –