1

demos、TornadoGists 、およびその他の要点スニペット(この前の質問に基づく) を調べたところ、Python の標準ライブラリに相当するコードは見つかりませんでした。起動ディレクトリからファイルを提供するためのすべてのボイラープレートを備えた、同時要求を処理できる非常に小さな Web サーバーを探しています。SimpleHTTPServerSimpleHTTPServer

4

1 に答える 1

2

更新: Tornado 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()

これは開始するためのものです。それを使用する場合は、ファイルシステムをたどってファイルにアクセスできないことを確認する必要があります。また、スクリプトは現在それ自体を提供していますが、これは少し奇妙です。

于 2012-03-21T18:57:48.713 に答える