Python 有类似SimpleHTTPServer的龙卷风吗?

Python 有类似SimpleHTTPServer的龙卷风吗?,python,webserver,tornado,embeddedwebserver,Python,Webserver,Tornado,Embeddedwebserver,通过查看和(基于),我没有从Python的标准库中找到任何与SimpleHTTPServer等效的代码。我正在寻找一个能够处理并发请求的非常小的web服务器,以及SimpleHTTPServer包含的用于从启动目录提供文件的所有样板文件。更新:从Tornado 3开始,使用内置的 Tornado并不是专门为静态文件服务的。如果这将看到任何负载,您应该使用nginx或类似的东西。如果不能,那么使用SimpleHTTPServer可能会更容易 也就是说,写一个很简单: import os.path

通过查看和(基于),我没有从Python的标准库中找到任何与
SimpleHTTPServer
等效的代码。我正在寻找一个能够处理并发请求的非常小的web服务器,以及
SimpleHTTPServer
包含的用于从启动目录提供文件的所有样板文件。

更新:从Tornado 3开始,使用内置的

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,它似乎满足了我的需求。啊,我没有意识到
SimpleHTTPServer
不是并发的,但当然,这是有意义的。如果您已经安装了Nginx,请坚持使用它;它会更快、更健壮。是的,我主要想要低调、易于安装的东西。以前没有使用过Nginx,我不知道它与Apache相比有多小。作为来自tornado导入web的命令行
python-c,ioloop;app=web.Application([(r'/(.*),web.StaticFileHandler,{'path':'./'})];app.listen(8000);ioloop.ioloop.instance().start()”
。与SimpleHTTPServer不同,它不会自动为文件夹内容生成列表。如果您知道存在哪些文件,则可以使用。