使用Apache mod_wsgi进行HTTP流式传输

时间:2014-01-29 07:24:05

标签: python apache flask mod-wsgi http-streaming

我有一个ubuntu服务器,我运行多个网络应用程序。 所有这些都由Apache使用名为VirtualHosts的托管。 其中一个是Flask应用程序,它通过mod_wsgi运行。 这个应用程序提供连续,无限的HTTP流。

如果有足够多的客户端连接到流端点,这最终会阻止我的app / server / apache worker吗? 如果是的话,还有其他选择吗? 其他非阻塞wsgi服务器可以很好地与VirtualHosts,不同的http-streaming范例,或者一些魔术apache mod_wsgi设置很好地配合使用?

它的核心看起来像:

@app.route('/stream')
def get_stream():
    def endless():
        while True:
            yield get_stuff_from_redis()
            time.sleep(1)

    return Response(endless(), mimetype='application/json')

1 个答案:

答案 0 :(得分:2)

如果客户端永远不会断开连接,是的,您最终将耗尽进程/线程来处理更多请求。

对于这种特定类型的应用程序,您最好使用Tornado或Twisted等异步框架。如果您不习惯这个概念,那么执行异步编程可能会非常棘手。

有些人使用gevent / eventlet这样的协程系统,但是他们也有自己需要注意的问题。