2

私の目標は、Django フォームからアップロードされた Celery を使用して大きな CSV ファイルを処理することです。ファイルのサイズが 未満の場合SETTINGS.FILE_UPLOAD_MAX_MEMORY_SIZE、フォームのcleaned_data変数をセロリ タスクに渡し、次のコマンドでファイルを読み取ることができます。

@task
def taskFunction(cleaned_data):
    for line in csv.reader(cleaned_data['upload_file']):
        MyModel.objects.create(field=line[0])

ただし、ファイルのサイズが上記の設定よりも大きい場合、次のエラーが発生します。

expected string or Unicode object, NoneType found

pickle 中に発生したエラーがスタック トレースに示されている場所:

return dumper(obj, protocol=pickle_protocol)

アップロードされたファイルが一時ファイルから読み取られると、pickle が失敗するようです。

この問題の簡単な解決策は、 を増やすことFILE_UPLOAD_MAX_MEMORY_SIZEです。しかし、この問題を管理するためのより良い方法があるかどうか、私は興味がありますか?

4

1 に答える 1