在我的models.py執行任務Django的通過芹菜從模型
from celery.decorators import task
from core.models import Image
@task()
def create_thumbnail(image_id):
ImageObj = Image.objects.get(id=image_id)
# other stuff here
這是返回以下:
- 例外類型:導入錯誤
- 異常值:不能導入名稱的任務
,如果我在tasks.py
註釋掉from core.models import Image
,但是這顯然會造成問題,因爲Image
在這裏沒有任何意義的錯誤消失。我試圖在create_thumbnail
之內導入它,但它仍然不會識別Image
。
我讀過的地方,通常對象本身可以作爲參數傳遞給任務,這將解決我的問題。然而,一位朋友曾告訴我,在RabbitMQ消息中發送儘可能少的數據被認爲是最佳實踐,所以爲了實現這一點,我試圖只傳遞圖像ID,然後在任務中再次檢索它。
1)我試圖做的是考慮最佳實踐嗎?如果是,我該如何解決?
2)我注意到在我發現的所有例子中,他們都是從視圖執行任務,而不是從模型執行任務。我試圖在新圖片上傳時創建縮略圖,我不想在每個表單/視圖中調用create_thumbnail。任何想法呢?正在執行一個不被推薦或慣例的模型的任務嗎?
我真的讚賞這一段:「爲了消除循環進口,你應該考慮進口應該發生的方式......」。謝謝。 – pawelmech