2011-07-10 35 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相關。

相關問題