0

在尝试测试一些东西时,使用 Django + apache2 + mod_wsgi3.3。通过运行定期产生结果,我发现了两个不同的结果。在嵌入和守护程序模式之间。

当尝试使用嵌入式模式时,即没有 WSGIDaemonProcess,使用 WSGIProcessGroup 指令。下面提到的函数一个接一个地产生结果,每个数字都会在 2 秒的睡眠后打印在浏览器视图上。

def yielder(request):
    gen = testYielding()
    return HttpResponse(gen)

def testYielding():
    yield "3"
    time.sleep(2)
    yield "4"
    time.sleep(2)
    yield "5"
    time.sleep(2)
    yield "6"
    time.sleep(2)
    yield "7"

尽管启用了 DaemonMode,但此视图会在 8 秒后整理完整的响应后响应数据,并将所有数字打印在一起并且不会产生相同的结果,一个接一个。

这种行为正确吗?有没有办法确保像嵌入式模式一样产生守护程序模式响应?

4

1 回答 1

0

守护进程中发生的刷新不会传输到正在执行代理的 Apache 子工作进程。因此,输出是否立即传递回客户端,部分取决于您注册的 Apache 输出过滤器。如果您有输出过滤器想要在刷新之前尝试缓冲响应数据,您将看到此问题。

因此,您应该仔细查看 Apache 输出过滤器的位置。如果您可以更改这些,那么您将别无选择,只能使用嵌入式模式。

于 2012-04-18T01:13:10.893 回答