我创建了小型 django 项目来服务音乐。一切都通过 django,甚至是流媒体部分(项目真的很小,最多 2-3 个用户)。
我现在想让项目独立,所以我使用 tornado 作为网络服务器。我正在使用以下内容:
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
wsgi_app = tornado.wsgi.WSGIContainer(
django.core.handlers.wsgi.WSGIHandler())
tornado_app = tornado.web.Application([
(r'/static/(.*)', tornado.web.StaticFileHandler, {'path': STATIC_DIR}),
(r'.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)),
])
server = tornado.httpserver.HTTPServer(tornado_app)
server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
虽然 Tornado 似乎缓冲了输出,因此无法播放流媒体音乐。有没有办法改变这种行为?或者 python 中是否有另一个网络服务器可以同时为 wsgi 应用程序和静态文件提供服务?
编辑:经过一些研究,我得出结论,问题很可能在于WSGIContainer
. 似乎在响应的定义中WSGIContainer
被读入缓冲区,然后写入客户端。因此,与其在原版的基础上滚动我自己WSGIContainer
的,有没有更好的方法来做到这一点?