我在 Django 中有一個視圖(start_job_view),它應該會觸發一個很長的程序。我希望視圖立即回傳并向用戶添加一條訊息(使用訊息框架“您的作業已開始”),我希望當長流程終止時它會向用戶發送一條新訊息(“您的作業已經完成”)。
我怎樣才能做到這一點?
注意:我不熱衷于將 Celery 添加到我的專案中以完成這項唯一的任務......
uj5u.com熱心網友回復:
一種選擇是使用async視圖。你可以在這里了解更多細節
另一個可以創建一個 celery 任務并在您的視圖中呼叫它。
uj5u.com熱心網友回復:
您可以使用在單獨執行緒上運行的記憶體佇列。看看段庫代碼,它在此處合并/處理 bg 執行緒中的事件。
請注意,如果您的服務器由于任何原因而終止,您有機制識別作業失敗并重試。
uj5u.com熱心網友回復:
假設您有多個連接到專用資料庫服務器的 Django 服務器實體正在運行。我只是使用資料庫表作為“佇列”來存盤需要運行的任務。
然后使用 systemd 在一個或多個服務器實體上運行 Django 命令作為作業任務。當一個worker空閑時,它可以查詢表以獲取下一個任務。
有一個“狀態”列將任務標記為已完成。然后你的 Django 前端可以檢查可用的“完成”任務,將訊息添加到回傳的頁面,并從表中洗掉任務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/517013.html
標籤:Pythonpython-3.xdjangodjango-views
