換句話說,你正在重新創建一個任務隊列?
也就是說,接口只是插入代表「爲我做這件事」的記錄,並且稍後從「爲您完成」表格(或同一張表格,無所謂)中檢索結果?
你真正想要的是某種遠程異步rpc調用接口,如果你願意,你可以用這種方式重建。
我仍然會推薦重新評估芹菜 - 我已經把它關閉了好幾次,但現在我已經把它設置了讓我感到震驚,我之前沒有使用它。你甚至可以使用Django數據庫作爲消息隊列後端(儘管我只是說爲低容量網站做這件事)。
不管怎樣,至於具體的問題:
有兩個獨立的過程中使用相同的數據庫表既不Django的也不是你的數據庫連接器將在這方面增加額外的限制沒有繼承的問題。
您將需要您的工作進程(「解決」)定期輪詢數據庫以查找要執行的任務,或向其發送消息(提示:芹菜!)。您的用戶界面客戶端(「界面」)可以在用戶刷新時檢查數據庫。
從實現的角度來看,它可能最簡單的方式是在兩個項目中完全共享代碼(所有模型,視圖等)。你會有一個進程以正常的方式啓動ui web服務器,而對於worker來說,連接一個自定義管理命令可能是啓動你的worker循環的最簡單的方法。
如果您打算寫入行時未使用select_for_update,那麼您可能會遇到數據庫鎖定/爭用條件的一些問題。或者,您可以使用.save(update_fields=zzz)來避免爭用,但只有1.5。
它真的讓我誤以爲django-db可以作爲隊列使用。謝謝! – sdkfasldf