2013-07-18 34 views
3

我使用芹菜和Django將我的pdf生成在後臺,同時我顯示一個加載頁面。芹菜任務完成後重定向到模板

但是,當任務完成(即生成我的pdf)時,我想重定向到負責發送郵件並向用戶顯示友好確認消息的下一個視圖。

我知道我可以得到task_postrun或task_success信號,但我不能從那裏重定向。

我搜索了幾個小時,但沒有找到任何解決方案,有什麼想法?

謝謝!

回答

2

有兩種方式:

  1. 要求服務器:保存在模型中TASK_ID你在哪裏存儲的PDF,並創建一個Ajax視圖如果任務完成,檢查每X秒,這個視圖的結果將決定它是應該重定向還是等待PDF。

    result = MyTask.AsyncResult(task_id) 
    result.get() 
    
  2. 實時的網絡:另一種方法是使用推進器與pusher_client_python,當PDF生成完成(在你的PDF創建rutine),使API調用來推動器誰將會通知發送到連接的客戶端(那一個等待結果)並且將重定向,這種方法更加方便,因爲您不必每隔X秒就問一次服務器。您將需要了解套接字範例,但它很容易實現。

希望這會有所幫助。

+1

謝謝!但第一個解決方案似乎不是最理想的,是不是有一種方法來使用芹菜api或django功能來重定向? 至於第二個解決方案,我寧願不使用第三方web服務這樣一個簡單的事情:) –

+0

你需要控制請求做出重定向,你做了「生成文檔」響應頁面,你不再需要控制這個請求來完成它,你必須向服務器請求(1)或做一些實時推送(2)。 – panchicore

+0

謝謝,我剛剛與ajax請求;) –