我有一個Django網站正在產生一個CSV下載。 csv的內容由用戶定義的參數決定。用戶可能會在服務器上設置需要大量思考時間的參數。我需要一種維持http連接的方式,以便瀏覽器不會引發錯誤消息。我聽說可以發送間歇性的http頭來做到這一點。任何人都可以在正確的方向指向我在django網站上設置它嗎?支持http連接,而Django處理一個大的請求(20mins +)
(不幸的是我堅持與慢報告的可能性 - 改善我的SQL不會減輕此)
我有一個Django網站正在產生一個CSV下載。 csv的內容由用戶定義的參數決定。用戶可能會在服務器上設置需要大量思考時間的參數。我需要一種維持http連接的方式,以便瀏覽器不會引發錯誤消息。我聽說可以發送間歇性的http頭來做到這一點。任何人都可以在正確的方向指向我在django網站上設置它嗎?支持http連接,而Django處理一個大的請求(20mins +)
(不幸的是我堅持與慢報告的可能性 - 改善我的SQL不會減輕此)
不要在網上做。觸發離線任務,使用一點Javascript重複調用一個檢查任務是否完成的視圖,並在準備好後重定向到完成的文件。
而不是阻止用戶和它的瀏覽器20分鐘(這不是一個好主意)在後臺執行耗時的任務。當任務完成並生成結果時,只需通知用戶,以便他/她只需要下載就緒結果即可。
您可能想要使用隊列處理系統來執行此操作 - django-celery可能會對您有所幫助。一旦十個用戶提交20分鐘的任務,每個人都有200分鐘的任務......電子郵件通知是這類任務的常見模式。 – Spacedman
+1除此之外--OP可能會考慮發送電子郵件給用戶(附加內容)或另外(作爲通知)。 – Marcin