Ich habe eine Ansicht in meiner Django-Anwendung, die automatisch ein Bild mit dem PIL erstellt, es auf dem Nginx-Medienserver speichert und eine HTML-Vorlage mit einem img-Tag zurückgibt, das auf die URL verweist.Django und dynamisch generierte Bilder
Das funktioniert gut, aber ich merke ein Problem. Für alle 5 Male greife ich auf diese Ansicht zu, in einem von ihnen wird das Bild nicht dargestellt.
ich einige Untersuchungen gemacht und ich habe etwas Interessantes gefunden, das ist die HTTP-Response-Header, wenn das Bild richtig macht:
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
und dies ist der Header, wenn das Bild nicht geladen wird:
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
Beachten Sie, dass der Inhalt-Lenth gleich Null ist. Was könnte das verursacht haben? Irgendwelche Ideen, wie ich dieses Problem weiter debuggen könnte?
Bearbeiten: Wenn die Ansicht aufgerufen wird, ruft es diese "Draw" -Methode des Modells. Dies ist im Grunde, was es tut (Ich entfernte den Großteil des Codes für Klarheit):
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: Dies ist Webseite: http://xxxcnn7979.hospedagemdesites.ws:8000/cartao/99/
wenn Sie halten auf der rechten Seite F5, um das Bild treffen wird eventuell rendern.
Wenn der Inhalt Länge Null ist, kann man sagen, ob das Bild erfolgreich erzeugt wurde und auf dem Server vorhanden? –
Ja, es wurde korrekt generiert, wenn Sie versuchen, auf die Bild-URL zuzugreifen, die direkt geöffnet wird. –
Warum hängen Sie die get-Abfragezeichenfolge an und variieren sie? –