浏览demos、TornadoGists和其他 gist 片段(基于this previous question),我没有找到任何与SimpleHTTPServer
Python 中的标准库等效的代码。我正在寻找一个可以处理并发请求的非常小的 Web 服务器,其中SimpleHTTPServer
包含用于从启动目录提供文件的所有样板。
问问题
1470 次
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 回答