demos、TornadoGistsおよびother gist snippets(this previous questionに基づく)を見ても、Pythonの標準ライブラリのSimpleHTTPServer
に相当するコードは見つかりませんでした。私は起動ディレクトリからファイルを提供するために、SimpleHTTPServer
に含まれるすべての定型文とともに、同時リクエストを処理できる非常に小さなWebサーバーを探しています。SimpleHTPServerに相当する竜巻がありますか?
1
A
答えて
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()
これはちょうどあなたが始めることです。あなたがそれを使うつもりなら、あなたはファイルシステムを歩き回って、どんなファイルにもアクセスできないようにするべきです。また、スクリプトは現在自分自身を提供していますが、これはちょっと変です。
私が質問で述べたように、私は複数の要求を同時に扱うことを探しています。 'SimnpleHTTPServer'はそれを処理しません。私は今夜あなたの例を試してみますが、それ以来Nginxを試してみたところ、私のニーズを満たすようです。 – technomalogical
ああ、 'SimpleHTTPServer'が同時ではないことに気付かなかったのですが、当然です。あなたはNginxのセットアップを持っている場合は、それに固執する;それはより速く、より堅牢になるでしょう。 –
ええ、ほとんど私はロープロファイルでセットアップが簡単なものが欲しかった。以前はNginxで働いていなかったので、Apacheと比較してどれほど小さくなったのか分かりませんでした。 – technomalogical