web-dev-qa-db-ja.com

Python Tomcatに相当するもの)

この質問はおそらく誤解を裏切りますが、Python世界の「Tomcat」が何であるか私は知りたいです。

私のWebプログラミングの経験はすべてJava(またはGroovy)なので、Java用語で考えます。基本的なWebアプリを作成することを考えるとき、いくつかのサーブレットを作成し、WARファイルを作成し、それをTomcatまたは別のサーブレットコンテナにデプロイすることを考えています。

Pythonでは、HTTPリクエストに応答できるコードを書いたとしたら、どうすればよいでしょうか?どのように展開しますか?

具体的には:Pythonで最も一般的に使用されるコンテナーは何ですか?そして、WARファイルに相当するもの、つまり、さまざまなコンテナーで機能する1つのファイルにWebアプリを標準的にパッケージ化したものはありますか?

42
Eric Wilson

共通する点が1つあるさまざまなアプローチがあります。それらは通常、WSGIを介して「コンテナ」(Pythonコードに進む前にHTTPリクエストを受信するサーバー)と通信します。

さまざまなコンテナがあります。

  • wsgiref-開発中の非常にシンプルなリファレンス実装
  • Apacheとmod_wsgi
  • wSGIサポートを追加するモジュールを備えた他のほとんどのWebサーバー
  • もっとたくさん
32
ThiefMaster

基本的なWebアプリを作成することを考えるとき、いくつかのサーブレットを作成し、WARファイルを作成し、それをTomcatまたは別のサーブレットコンテナーにデプロイすることを考えます。

それはいいですが、無関係です。これは単なるJava-ismであり、Java以外ではあまり適用されません。

Pythonでは、HTTPリクエストに応答できるコードを書いたとしたら、どうすればよいでしょうか?どのように展開しますか?

場合によります。

Pythonで最も一般的に使用されるコンテナは何ですか?

ありません。

そして、WARファイルに相当するもの、つまり、さまざまなコンテナーで機能する1つのファイルにWebアプリを標準的にパッケージ化したものはありますか?

ありません。


HTTPは、要求に対する応答を生成するためのプロトコルです。それでおしまい。それは本当に非常に小さなことです。

リクエストに応答できるCGIスクリプトがあります。 Python cgiライブラリはそれを行うことができます http://docs.python.org/library/cgi.html

単純なCGIルールは「リクエストごとに新しいプロセスを起動する」ため、これは比較的非効率的です。また、スクリプトが昇格された特権または計画的に不適切なアップロードを許可している場合も、安全ではない可能性があります。

mod_wsgi ApacheをPythonに接続するためのフレームワーク。これはCGIのように動作するか、名前付きパイプの最後で実行される専用のPython "daemon"を持つことができます。

WSGI標準は、非常に便利で拡張性の高い要求および応答処理の形式を定義しています。ほとんどのフレームワークは、何らかの形でWSGI互換です。

最後に、要求と応答のクラス定義、URL解析、認証、承認などを含む、より完全なフレームワークがあります。

これがリストです: http://wiki.python.org/moin/WebFrameworks

6
S.Lott

多分 'uwsgi'が役立つでしょう。ここにリンクがあります: http://projects.unbit.it/uwsgi/

2
Kaibin

Pythonで使用できるWebサーバーは多数あります。 CherryPyのようなWebサーバーの一部はPython自体で記述されています。答えの最もクールな部分は、Tomcatサーバー自体がPythonベースのアプリケーションをサポートしていることです。

詳細については、このサイトをご覧ください。 https://wiki.python.org/moin/WebServers

0
Anand