我有一个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')
答案 0 :(得分:2)
如果客户端永远不会断开连接,是的,您最终将耗尽进程/线程来处理更多请求。
对于这种特定类型的应用程序,您最好使用Tornado或Twisted等异步框架。如果您不习惯这个概念,那么执行异步编程可能会非常棘手。
有些人使用gevent / eventlet这样的协程系统,但是他们也有自己需要注意的问题。