2012-03-20 9 views
1

demosTornadoGistsおよびother gist snippetsthis previous questionに基づく)を見ても、Pythonの標準ライブラリのSimpleHTTPServerに相当するコードは見つかりませんでした。私は起動ディレクトリからファイルを提供するために、SimpleHTTPServerに含まれるすべての定型文とともに、同時リクエストを処理できる非常に小さなWebサーバーを探しています。SimpleHTPServerに相当する竜巻がありますか?

答えて

2

更新日:竜巻3の時点では、StaticFileHandlerに組み込まれています。

Tornadoは実際に静的ファイルを提供するためのものではありません。これで負荷が見える場合は、nginxなどを使用してください。もしそうでなければ、SimpleHTTPServerを使う方が簡単かもしれません。ものを書くために些細だ、と述べた

import os.path 
import mimetypes 

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web 

class FileHandler(tornado.web.RequestHandler): 
    def get(self, path): 
     if not path: 
      path = 'index.html' 

     if not os.path.exists(path): 
      raise tornado.web.HTTPError(404) 

     mime_type = mimetypes.guess_type(path) 
     self.set_header("Content-Type", mime_type[0] or 'text/plain') 

     outfile = open(path) 
     for line in outfile: 
      self.write(line) 
     self.finish() 

def main(): 
    tornado.options.enable_pretty_logging() 
    application = tornado.web.Application([ 
     (r"/(.*)", FileHandler), 
    ]) 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(8888) 
    tornado.ioloop.IOLoop.instance().start() 

if __name__ == "__main__": 
    main() 

これはちょうどあなたが始めることです。あなたがそれを使うつもりなら、あなたはファイルシステムを歩き回って、どんなファイルにもアクセスできないようにするべきです。また、スクリプトは現在自分自身を提供していますが、これはちょっと変です。

+0

私が質問で述べたように、私は複数の要求を同時に扱うことを探しています。 'SimnpleHTTPServer'はそれを処理しません。私は今夜​​あなたの例を試してみますが、それ以来Nginxを試してみたところ、私のニーズを満たすようです。 – technomalogical

+0

ああ、 'SimpleHTTPServer'が同時ではないことに気付かなかったのですが、当然です。あなたはNginxのセットアップを持っている場合は、それに固執する;それはより速く、より堅牢になるでしょう。 –

+0

ええ、ほとんど私はロープロファイルでセットアップが簡単なものが欲しかった。以前はNginxで働いていなかったので、Apacheと比較してどれほど小さくなったのか分かりませんでした。 – technomalogical

関連する問題