尝试提供文件时出现错误

时间:2012-08-08 14:09:53

标签: python apache mod-wsgi web.py

我正在尝试使用web.py框架将处理过的数据文件返回给webapp用户。在此示例中,该文件名为plate3_v4.gb。我试图用名称results.gb返回它。这基于this thread

以下是代码:

class ServeHandler():
    def GET(self):
        web.header("Content-Disposition", "attachment; filename=%s" %"results.gb")
        web.header("Content-Type", "gb")
        web.header('Transfer-Encoding','chunked')
        f = open('/usr/local/www/wsgi-scripts/uploads/plate3_v4.gb','rb')
        while 1:
            buf = f.read(1024 * 8)
            if not buf:
                break
            yield buf

当我进入我认为应该向我提供数据的页面时,我得到了

mod_wsgi (pid=21773): Exception occurred processing WSGI script '/usr/local/www/wsgi-scripts/code.py'.
IOError: failed to write data

在我的错误日志中。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

首先,WSGI应用程序永远不应设置Transfer-Encoding响应头。只有底层Web服务器才能这样做。对于mod_wsgi,只要没有提供响应内容长度,Apache就应该自动执行此操作。

关于错误,它表示客户端在读取所有返回的数据之前关闭了套接字连接。