1

我正在通过 Flup/fastcgi 在 lighttpd 上运行 TG2 应用程序。我们正在从 MySQL 数据库中的 BlobFields 读取图像(每个约 30kb),并通过控制器方法返回具有自定义 mime 类型的图像。在硬盘上缓存这些图像是没有意义的,因为它们会随着每个请求而变化,我们在数据库中缓存这些图像的唯一原因是创建这些图像非常昂贵,并且用于创建图像的数据也以纯文本形式存在于网站。

现在到问题本身:

返回这样的图像时,事情变得非常缓慢。代码在 paste 本身上运行完全正常,没有明显的延迟,但是一旦通过 fcgi/lighttpd 运行,就会发生所描述的现象。

我分析了返回我的 blob 的控制器的方法,整个方法在几毫秒内运行,但是当“return”执行时,整个应用程序挂起大约 10 秒。

我们无法在 FCGI 上使用 PHP 重现相同的错误。这似乎只发生在 Turbogears 或 Pylons 上。

这里供您考虑相关的源代码:

@expose(content_type=CUSTOM_CONTENT_TYPE)
def return_img(self, img_id):
    """ Return a DB persisted image when requested """

    img = model.Images.by_id(img_id) #get image from DB
    response.headers['content-type'] = 'image/png'
    return img.data # this causes the app to hang for 10 seconds
4

1 回答 1

0

我真的不知道,但是看到这里没有答案,我会尝试一个疯狂的猜测。

也许

response.headers['content-length'] = len(img.data)

有助于?

于 2010-07-07T21:46:05.933 回答