是否有SimpleHTTPServer的龙卷风等价物?

时间:2012-03-20 18:19:02

标签: python webserver tornado embeddedwebserver

仔细查看demosTornadoGistsother gist snippets(基于this previous question),我没有找到与标准SimpleHTTPServer相当的任何代码Python中的库。我正在寻找一个可以处理并发请求的非常小的Web服务器,其中包含SimpleHTTPServer所有用于从启动目录提供文件的样板。

1 个答案:

答案 0 :(得分: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()

这只是为了让你开始;如果你要使用它,你应该确保你不能走上文件系统并访问任何文件。此外,脚本目前服务自己,这有点奇怪。