Django uygulamasında, PIL kullanarak otomatik olarak görüntü oluşturan, Nginx medya sunucusunda saklayan ve URL'sini işaret eden bir img etiketli bir html şablonu döndüren bir görünüm var.Django ve dinamik olarak oluşturulmuş resimler
Bu iyi çalışıyor, ancak bir sorun olduğunu fark ettim. Her 5 kez bu görüntüye erişiyorum, bunlardan 1 tanesinde görüntü oluşmuyor.
Bazı araştırma yaptı ve ilginç bir şey buldum, görüntü düzgün oluşturulduğunda bu HTTP yanıt başlığıdır:
Accept-Ranges:bytes
Connection:keep-alive
Content-Length:14966
Content-Type:image/jpeg
Date:Wed, 18 Aug 2010 15:36:16 GMT
Last-Modified:Wed, 18 Aug 2010 15:36:16 GMT
Server:nginx/0.5.33
ve görüntü yükü değil yaptığında bu başlık budur:
Accept-Ranges:bytes
Connection:keep-alive
Content-Length:0
Content-Type:image/jpeg
Date:Wed, 18 Aug 2010 15:37:47 GMT
Last-Modified:Wed, 18 Aug 2010 15:37:46 GMT
Server:nginx/0.5.33
Content-Lenth öğesinin sıfıra eşit olduğuna dikkat edin. Buna ne sebep olmuş olabilir? Bu sorunu nasıl daha fazla ayıklayabileceğime dair herhangi bir fikir var mı?
Düzenleme: Görünüm çağrıldığında, modelin bu "çizim" yöntemini çağırır. Bu web sitesidir:
def draw(self):
# Open/Creates a file
if not self.image:
(fd, self.image) = tempfile.mkstemp(dir=settings.IMAGE_PATH, suffix=".jpeg")
fd2 = os.fdopen(fd, "wb")
else:
fd2 = open(os.path.join(settings.SITE_ROOT, self.image), "wb")
# Creates a PIL Image
im = Image.new(mode, (width, height))
# Do some drawing
.....
# Saves
im = im.resize((self.get_size_site(self.width),
self.get_size_site(self.height)))
im.save(fd2, "JPEG")
fd2.close()
Edit2: Bu ne işe yaradığını temelde (Ben netlik için kod toplu kaldırıldı) http://xxxcnn7979.hospedagemdesites.ws:8000/cartao/99/
F5 sağdaki görüntü isabet devam edersek olacak sonunda ortaya çıkar.
içerik uzunluğu görüntü başarıyla oluşturulduğu olmadığını anlamanın, sıfırdır ve sunucuda var? –
Evet, görüntü URL'sine doğrudan erişmeye çalıştığınızda doğru oluşturuldu. –
Neden get sorgu dizgesini ekler ve değiştirirsiniz? –