私の目標は、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
です。しかし、この問題を管理するためのより良い方法があるかどうか、私は興味がありますか?