2011-10-02 16 views
1

私はBaseHTTPServerの勉強をたくさん行ってきました。私はこの記事を http://metachris.org/2011/01/scaling-python-servers-with-worker-processes-and-socket-duplication/#python複数のリクエストで使用できるPython HTTPサーバー

を行って、私は複数の要求のために HTTPサーバを構築するための最善の方法は何か知りたかった - HTTP Serverの私の要件は単純です

>

を - - 複数の要求をサポート> - - BaseHTTPServer(スレッドに良いではありません) - mod_pythonの(Apacheのときの積分) - CherryPyに今私はオプションは以下のいるティル

(ここで、それぞれの要求は、LONGのPythonスクリプトを実行する場合がありますか)? - 他の?

答えて

1

実際、標準のPythonライブラリで提供されているHTTPサーバーは軽い用途のためのものです。中程度のスケーリング(同時接続数100)の場合、Apacheのmod_wsgiが最適です。

あなたのニーズがそれよりも大きい場合(10,000の同時接続)、TwistedやTornadoなどの非同期フレームワークを見たいと思うでしょう。非同期アプリケーションの一般的な構造はまったく異なります。そのルートを下る必要があると思われる場合は、最初からこれらのフレームワークの1つでプロジェクトを開始してください。

2

私は非常に良い純粋なPython Webサーバーの中でも最も古く、最も固いCherryPy Webサーバーで運が良かったです。あなたのアプリケーションをWSGI呼び出し可能ファイルとして書くだけで、CherryPyのマルチスレッドサーバーで簡単に実行できるはずです。

http://www.cherrypy.org/

1

Tornado本当に良いと使いやすいのFriendFeed/Facebookのによって開発された非同期イベント・ループ/ Webサーバです。私は個人的にとても良い経験をしてきました。以下の例のようにHTTPクラスを使用することも、io-loopだけを使用してプレーンTCP接続を多重化することもできます。

import tornado.ioloop 
import tornado.web 

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     self.write("Hello, world") 

application = tornado.web.Application([ 
    (r"/", MainHandler), 
]) 

if __name__ == "__main__": 
    application.listen(8888) 
    tornado.ioloop.IOLoop.current().start() 
関連する問題