python - 使用 Apache mod_wsgi 进行 HTTP 流传输

标签 python apache flask mod-wsgi http-streaming

我有一个 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/

相关文章:

python - PySpark DataFrame - 动态加入多列

java - 在 Java httpclient 中设置用户代理并允许重定向到 true

flask - 随机时间没有 user_loader 异常(重置时消失)

python - 在 Flask 框架中使用 SQLAlchemy 有何不同

python - Django:用户报告网站上的某些 URL

python - 删除 DataFrame 中的多个空白

java - 有没有一种简单的方法可以使用 Apache Web 服务器运行 Java servlet?

apache - 可以在没有 HDFS 的情况下使用 Apache YARN 吗?

python - 为什么在 Python 中对该项目使用装饰器时 Flask 的 url_for 会抛出错误?

python - 动态系统托盘文本(Python 3)