我的Django应用程序中有一个视图,它使用PIL自动创建一个图像,将其存储在Nginx媒体服务器中,并返回一个html模板,其中一个img标记指向它的url。
这很好,但我注意到一个问题。每5次访问此视图,其中1次图像不会渲染。
我做了一些调查,发现了一些有趣的事情,这是正确呈现图像时的HTTP响应头:
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
这是图像未加载时的标题:
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等于零。是什么造成的?关于如何进一步调试这个问题有什么想法吗?
编辑:
调用视图时,它调用模型的这个“绘制”方法。这就是它的基本功能(为了清晰起见,我删除了大部分代码):
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()
这是网站:
http://xxxcnn7979.hospedagemdesites.ws:8000/cartao/99/
如果一直按F5键,右侧的图像最终将渲染。