我有一个 ubuntu 服务器,我正在其中运行多个网络应用程序。 所有这些都由 Apache 使用命名的 VirtualHosts 托管。 其中之一是 Flask 应用程序,它通过 mod_wsgi 运行。 此应用程序提供连续、无限的 HTTP 流。
如果有足够的客户端连接到流端点,这最终会阻止我的应用程序/服务器/apache 工作线程吗? 如果是,还有其他选择吗? 其他与 VirtualHosts、不同的 http 流范例或一些神奇的 apache mod_wsgi 设置配合良好的非阻塞 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')
最佳答案
如果客户端永远不会断开连接,是的,您最终将耗尽进程/线程来处理更多请求。
对于这种特定类型的应用程序,您最好使用 Tornado 或 Twisted 等异步框架。如果您不习惯异步编程的概念,那么进行异步编程可能会很棘手。
有些人使用协程系统,例如gevent/eventlet,但他们也有自己的问题,你必须注意。
关于python - 使用 Apache mod_wsgi 进行 HTTP 流传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424648/