1

浏览demosTornadoGists其他 gist 片段(基于this previous question),我没有找到任何与SimpleHTTPServerPython 中的标准库等效的代码。我正在寻找一个可以处理并发请求的非常小的 Web 服务器,其中SimpleHTTPServer包含用于从启动目录提供文件的所有样板。

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 回答