用django-celene任务处理大文件



我的目标是使用通过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。然而,我很好奇是否有更好的方法来处理这个问题?

将其保存到一个临时文件中,并将文件名传递给cerele。处理后删除。

相关内容

  • 没有找到相关文章

最新更新