1
我有一個Django應用程序,我在視圖中創建一個數據庫條目。然後我想對新條目執行後臺處理。我不發送創建的對象到任務,而是發送對象的id,然後後臺任務可以按照here的說明獲取db對象。下面是我的代碼:Django - 創建數據庫條目的時間延遲
# In tasks.py
@shared_task
def my_task(model_id):
my_model = MyModel.objects.get(pk=model_id)
# Do stuff with my_model
# In views.py:
def some_view(request):
if request.method == 'POST' and request.is_ajax():
instance = MyModel.objects.create(**kwargs)
tasks.my_task.delay(instance.id)
....
但是,當我試圖讓在後臺任務的對象,我得到匹配查詢不存在錯誤。如果我在獲取對象之前添加sleep(1)
,它的作用如同例外。我不明白爲什麼我得到這個錯誤,因爲對象應該在數據庫中?有人知道如何解決這個問題嗎?我真的不想在任何地方添加睡眠命令。
我使用Postgres作爲我的數據庫。
非常感謝!幾個小時一直在掙扎着! – Johan
我實際上不得不使用transaction.non_atomic_requests,因爲原子請求已經在 – Johan