2011-07-10 38 views
0

我有一些用django/python编写的代码。主要原因是HTTP响应是一个生成器函数。它在浏览器窗口中逐行扫描子进程的输出。这在我使用django测试服务器时非常有效。当我使用真实的服务器时,它会失败/基本上它只是在您按下页面上的提交按钮之前弹出。django生成器函数不能与真正的服务器一起工作

@condition(etag_func=None) 
def pushviablah(request): 
    if 'hostname' in request.POST and request.POST['hostname']: 
     hostname = request.POST['hostname'] 

     command = "blah.pl --host " + host + " --noturn" 
     return HttpResponse(stream_response_generator(hostname, command), mimetype='text/html') 

def stream_response_generator(hostname, command): 
    proc = subprocess.Popen(command.split(), 0, None, subprocess.PIPE, subprocess.PIPE, subprocess.PIPE) 
    yield "<pre>" 
    var = 1 
    while (var == 1): 
     for line in proc.stdout.readline(): 
      yield line 

任何人有任何建议如何让这与真正的服务器上工作?甚至如何调试它不工作的原因?

+0

你能更新服务器设置吗?你只是使用内部服务器进行开发/测试和其他生产? – rajasaur

+0

@rajasaur我正在运行'python manage.py runserver 0.0.0.0:8080'用于测试目的。然后我部署代码并在真实服务器上运行它。真正的服务器使用相同的settings.py,所以我期望有相同的结果。除了我在服务器上运行的应用程序之外,没有别的东西了。我可以做所有的调试和弄乱我想要的东西。 – evolution

+0

更新: 我发现生成器函数实际上正在运行,但它必须在httpresponse在屏幕上抛出一个页面之前完成。我不希望在用户看到输出之前等待它完成。我希望用户在子进程进行时看到输出。 – evolution

回答

0

我发现生成器函数实际上正在运行,但它必须在httpresponse在屏幕上抛出一个页面之前完成。我不希望在用户看到输出之前等待它完成。我希望用户在子进程进行时看到输出。

我想知道这个问题是否可以与apache2而不是django相关。

相关问题