我的目标是使用通过 Django 表单上传的 Celery 处理大型 CSV 文件。当文件的大小小于SETTINGS.FILE_UPLOAD_MAX_MEMORY_SIZE
时,我可以将表单的cleaned_data
变量传递给 celery 任务并使用以下命令读取文件:
@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
堆栈跟踪显示泡菜期间发生的错误:
return dumper(obj, protocol=pickle_protocol)
看来,当从临时文件中读取上传的文件时,pickle 失败了。
解决这个问题的简单方法是增加FILE_UPLOAD_MAX_MEMORY_SIZE
. 但是,我很好奇是否有更好的方法来管理这个问题?