1

我正在尝试使用 web.py 框架将处理后的数据文件返回给 webapp 用户。在本例中,该文件名为 plate3_v4.gb。我正在尝试使用名称 results.gb 返回它。这是基于这个线程

这是代码:

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

在我的错误日志中。

有什么想法吗?

4

1 回答 1

3

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

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

于 2012-08-09T01:54:20.107 回答