UPDATE:自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()
這只是讓你開始;如果你打算使用它,你應該確保你不能走上文件系統並訪問任何文件。此外,腳本目前服務於自己,這有點奇怪。
正如我在問題中提到的,我正在尋找同時處理多個請求。 「SimnpleHTTPServer」不處理這個問題,至少不是開箱即用的。今晚我會嘗試你的例子,但是我從此嘗試過Nginx,它似乎滿足了我的需求。 – technomalogical 2012-03-27 18:45:30
啊,沒有意識到'SimpleHTTPServer'不是併發的,但當然,這是有道理的。如果你有Nginx設置,請堅持下去;它會更快,更健壯。 – 2012-03-27 23:31:18
是的,我主要是想要一些低調且易於設置的東西。之前沒有與Nginx合作過,我沒有意識到它與Apache相比有多小。 – technomalogical 2012-04-10 13:44:05