1

我正在构建一个内部 webapp 来处理 DNA 序列数据。我需要能够接受一个包含多个序列的压缩文件,该文件通常大于 30MB,并且可以大到 80MB。

我遵循了过去用于文件上传的模式:

class ABIUploadHanlder(Handler):
    def POST(self):
        x = web.input(abifile = {})
        filedir = '/usr/local/www/wsgi-scripts'
        if 'seqfile' in x:
            time_key = str(time.time()).replace('.','')

            filepath=x.seqfile.filename.replace('\\','/')
            filename = time_key + 'abizipped.zip'

            filetype = filename.split('.')[-1]
            if filetype == 'zip':
                pass
            else:
                raise web.seeother('/export?err=type')
            fout = open(filedir +'/uploads/'+ filename,'w')
            fout.write(x.seqfile.file.read())
            fout.close()

        raise web.seeother('/abiprocess')

当我将 30MB 的文件发布到 Web 表单时,我会出现奇怪的行为。有时上传会达到 30% 左右,然后重新启动。有时上传会在一次尝试后失败。在所有尝试中,上传从未完成,我最终收到“网页不可用”错误。

我的直觉是,我需要在某个地方告诉网站在上传期间保持连接,即使这需要很长时间。到目前为止,我还没有找到如何控制它。

任何帮助表示赞赏。

4

1 回答 1

0

在传输一定数量的块后运行的代码中出现错误。如果在客户端完成文件上传之前在应用程序中发生错误,则在我的应用程序上配置 web.py 和 apache 的方式(并且我认为我没有使用奇怪的配置)会导致奇怪的行为。特别是,如果发生错误,浏览器不会显示典型的“内部服务器错误”页面,而是尝试再次上传文件,循环直到放弃。

由于我当前正在记录许多步骤和状态,错误消息被隐藏在日志中。经过非常仔细的处理后,我终于遇到了这个问题。

于 2012-08-20T15:45:23.170 回答