1

DNA 配列データを処理するための内部 webapp を構築しています。多くの場合、30MB を超え、最大 80MB になる複数のシーケンスの zip ファイルを受け入れることができる必要があります。

過去にファイルのアップロードに使用したパターンに従いました。

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% に達してから再起動することがあります。1 回の試行でアップロードが失敗する場合があります。すべての試行でアップロードが完了せず、最終的に「Web ページが利用できません」というエラーが表示されます。

私の推測では、アップロードに時間がかかっても、どこかでサイトに接続を維持するように指示する必要があります。これまでのところ、これを制御する方法を見つけることができませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1

0

特定の数のチャンクが送信された後に実行されるコードにエラーがありました。クライアントがファイルのアップロードを完了する前にアプリでエラーが発生すると、アプリで web.py と apache が構成されている方法 (奇妙な構成を使用しているとは思わない) が奇妙な動作を引き起こします。特に、エラーが発生した場合、ブラウザは通常の「内部サーバー エラー」ページを表示する代わりに、ファイルのアップロードを再試行し、断念するまで繰り返します。

現在ログに記録している多数の手順とステータスのため、エラー メッセージはログに埋もれていました。非常に慎重に検討した後、最終的に問題に遭遇しました。

于 2012-08-20T15:45:23.170 に答える