2012-05-02 53 views
1

我目前正在用django編寫一個web應用程序,現在放在我的主頁上的一個按鈕上,它將打開一個新的瀏覽器窗口並運行一個python腳本。現在腳本需要大約5分鐘才能完成。如何在這段時間之前返回響應,以便用戶知道發生了什麼,並且只需要一些時間。這裏是views.py即時通訊使用的部分。如何在腳本完成前返回HttpResponse?

謝謝你的幫助!

def redoScan(request): 
    main() 
    return HttpResponse("Submitted new scan job. New data will be displayed on main page in 5 minutes") 
+4

check [django-celery](http://pypi.python.org/pypi/django-celery),或者查看http://stackoverflow.com/questions/4310706/django-comet-push-least-一切惡毒 – okm

+0

芹菜或某種反思如何完成和使用一些Ajax。 –

+0

謝謝大家。我會看看芹菜。 – masterlampe

回答

0

好吧,我現在實際上已經使用Javascript來在屏幕上寫狀態,然後我調用一個AJAX函數,一旦掃描完成後會發布新的狀態。這實際上並不壞,因爲我使用AJAX無論如何不是什麼大不了的事情。之前應該有這個想法。

謝謝你們,無論如何您的幫助!

0

您可能會返回HttpResponse並添加異步任務。 使用celary或cron或其他任務管理器

0

您可以使用消息隊列,如django-celery。正如你可以告訴它已經有一個簡單的Django集成。 Celery可以讓你異步地將'任務'傳遞給消息隊列進行處理。這將允許用戶開始時間密集型過程,而不必等待它們。

http://mathematism.com/2010/02/16/message-queues-django-and-celery-quick-start/

如所建議的通過pahaz一個cron可用於聚合數據太。如果您對每個用戶定期進行相同的計算。然後,這可以輕鬆地轉換爲自定義管理命令,並且數據可以存儲在itermediary表中。這樣用戶只需要查看數據而不必等待數據被處理。

相關問題