音楽を提供する小さな django プロジェクトを作成しました。ストリーミング部分も含め、すべてが django を経由します (プロジェクトは非常に小さく、最大 2 ~ 3 ユーザーです)。
プロジェクトを自己完結型にしたいので、トルネードをWebサーバーとして使用しています。私は次のようなものを使用しています:
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()
トルネードは出力をバッファリングするようですが、その結果、音楽のストリーミングはできません。この動作を変更する方法はありますか? または、wsgi アプリケーションと静的ファイルの両方を提供できる Python の別の Web サーバーはありますか?
EDIT:いくつかの調査の後、問題はおそらくにあると結論付けましたWSGIContainer
。応答の定義でWSGIContainer
は、バッファに読み込まれてからクライアントに書き込まれるようです。WSGIContainer
オリジナルに基づいて自分で作成する代わりに、それを行うより良い方法はありますか?