2017-01-16 32 views
2

我正在使用Django 1.10.4和MySQL 5.7。Django object.filter未加載所有結果

所以,我有以下型號:

class Image(models.Model): 
    request = models.ForeignKey(Request, on_delete=models.CASCADE) 
    customID = models.CharField(max_length=128, null=True) 
    status = models.IntegerField(default=0) 
    row = models.IntegerField(default=0) 
    column = models.IntegerField(default=0) 

class Request(models.Model): 
    name = models.CharField(max_length=128, null=True) 

然後我加載的所有圖片對象爲有一定的要求(這可以在幾個線程中運行):

images = models.Image.objects.filter(request_id=req_id).order_by('column', 'row') 

的問題是,我我並不總是得到正確的Image對象集合。有時會將它們全部加載,有時它會在加載過程中停下來。我的意思是,我得到例如4個10,或12個圖像對象中的11個。對於單個請求中的圖像,行列對始終是唯一的,但是當發生此問題時,最後加載的圖像對象具有行和列= 0(當保存在DB中的正確元素例如是1,8時)。這怎麼可能?爲什麼我沒有得到任何例外或錯誤?

+1

「這可以在幾個線程中運行」聽起來像是我可能遇到的問題......其他線程在做什麼以及爲什麼使用線程呢? – Sayse

+0

我已經嘗試使用threading.Lock,但沒有成功。加載完整的圖像後,我將在該模型中描述的實際png文件文件上啓動C++應用程序。它需要大約10分鐘才能完成,並且處理所有傳入的圖像,我不能一次只啓動一個。 – Ijon

+0

你有沒有檢查過你的數據庫中的圖像是否真的存在?您是否嘗試過在交易中運行您的視圖? – Maciek

回答

0

這個問題令人驚訝的是沒有直接連接到線程。最近幾周,發送到系統的圖像數量和尺寸都有所增加(如果大小的話,大約是10倍),但我沒有考慮到這一點。在所有圖像尚未保存的情況下,我試圖在某些情況下加載請求圖像速度過快。好吧,我不會犯同樣的錯誤兩次。