mod_wsgi上的apache守护进程模式不会产生小字符串

时间:2012-04-17 21:10:28

标签: mod-wsgi

在尝试测试一些事情时,使用Django + apache2 + mod_wsgi3.3。我通过定期生成结果找到两个不同的结果。在embeded和daemon模式之间。

当尝试使用嵌入模式时,即没有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秒的完整响应后对数据进行响应,并且所有数字一起打印而不是相同,一个接着一个。

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

1 个答案:

答案 0 :(得分:0)

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

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