11

私が言えることから

  1. wsgiref - コードのリロードなし
  2. CherryPy - サーバー以上のもの
  3. mod_wsgi - すべての Apache オーバーヘッド
  4. paste.httpserver - ペーストは他のものを含む巨大なパッケージです
  5. flup - 貼り付けと同じ、詰め込みすぎ。
  6. 産卵 - 使用したことはありませんが、十分に軽量のようです。
  7. Tornado - 実際には wsgi + 完全な「フレームワーク」ではありません
  8. Werkzeug - コマンドの実行

他の人はいますか?どちらが好きですか?

4

7 に答える 7

5

Werkzeug、WSGI ユーティリティ ツールキットです。これには、wsgiref サーバーを使用して自動コード リロードを追加する runserver 関数 (構成ファイルが変更されたときにリロードするように構成することもできます) と素晴らしいデバッガーが含まれています。

余談ですが、フレームワークに対するあなたの軽蔑は、すべての WSGI をゼロから処理することを計画しているように聞こえます。その場合、Werkzeug のユーティリティ関数を使用して、リクエストの解析と応答の生成を処理することをお勧めします。自分でやるよりずっと楽しいです。(そしてグイドの愛のために、使用しないでくださいcgi.FieldStorage!)

于 2010-01-29T12:32:13.120 に答える
4

werkzeug から run_simple をチェックしてください:

http://werkzeug.pocoo.org/documentation/0.5.1/serving.html

コードの自動リロードに加えて、 use_debugger=True を使用して、アプリの上に非常に気の利いたデバッガーを含めることができます (トレースバックの各行にコンソールが含まれます)。

于 2010-02-13T20:07:44.517 に答える
2

非常に簡単な方法の 1 つは CGI です (通常の Web サーバーと組み合わせて を使用しますwsgiref.handlers.CGIHandler)。本番サーバーでのパフォーマンスはひどいですが、開発には最適です。mod_wsgi WSGIScriptAlias (applicationオブジェクトを公開する) と mod_cgi ScriptAlias ( when を呼び出す)wsgirefの両方として機能する単一のスクリプトを作成できます__name__=='__main__'

多くの WSGI 環境には、WSGIScriptReloadingデフォルトでオンになっている mod_wsgi の など、基本的なスクリプトをリロードする方法があります。残念ながら、コードの多くをモジュールに入れる可能性が高く、再読み込みが容易ではありません。mod_wsgi では、デーモン モードのときに SIGINT を送信してリロードを実行することによっても実行できます。残念ながら、リロードする必要があるかどうかを知るために、mtime の更新に使用しているすべてのモジュールをスニッフィングする必要があります。また、組み込みモードでは機能しません。

面倒ですが実行可能なアプローチは、アプリケーションの一部であるすべてのモジュールをスニッフィングし、最後のチェック以降に更新されたモジュールがある場合は、それらをすべてリロードすることです。それらが古いものへの相互参照を保持しないようにするために、ルックアップからそれらをすべて削除することによって、それらを一度にリロードする必要がありますsys.modules(相対的なインポートルックアップの問題を回避するために、そこにいる間に - 値のエントリも削除します)。None自分自身のバージョン。そしてもちろん、アプリケーションの外部に自分自身への他の参照を残してはなりません。この例は、こちらModuleUpdaterのクラスで実際に見ることができます。

(このソフトウェアはリリースの準備ができていませんが、数年前から私の WSGI アプリにモジュールのリロードを提供しており、安定しているようです。アイデアは、すべての WSGI アプリをパッケージ内のアプリケーション クラスに入れることです。単一の WSGI/CGI/コマンドライン エントリ ポイント スクリプトからインポートします。そのスクリプトに配置構成を含めます。)

于 2010-01-29T12:57:53.420 に答える
1

Also, you missed web.py, which is both small and supports code reload.

于 2010-02-16T03:36:47.017 に答える
1

これまでのところ、私は CherryPy を使用してきましたが、Django (あなたのリストにはありませんが、私が使用した唯一の他の開発サーバーです) と比較して、私はそれが山ほど気に入っています。それは言うことを行います: それはあなたがそれを必要とするときだけそこにあり、それ以外の時間は邪魔になりません。

Django を使用するには、Django のやり方に同意する必要があるように思えました。Django はすぐに使える多くの機能 (デフォルトの管理インターフェース、Web ページのウィジェット) を提供しますが、CherryPy を使用することは、非常に優れた (多くの場合、余分な機能で驚かされる) 機能を備えた別のインポートのように思えます。

于 2010-01-29T12:33:35.723 に答える
1

ペーストまたはCherryPyをお勧めします。それらは、起動して実行するのが最も簡単です。

于 2010-01-29T12:52:37.473 に答える
0

他の貼り付けモジュールは別として、任意の wsgi-server で paste.reloader を使用できます。

# 貼り付けリローダーを実行
paste.reloader をリローダーとしてインポートする
reloader.install()

# wsgiref サーバーを実行
from wsgiref import simple_server
simple_server.make_server('', 8080, main_wsgi_app).serve_forever()

それは十分なミニマリストですか?

于 2010-02-16T03:30:16.140 に答える