使用 celery 上传更多感谢 2.5mb 的图像时,Django 文件上传器抛出错误“无法 pickle '_io.BufferedRandom' 对象”

use*_*824 3 python django serialization pickle celery

我正在尝试在 Django 中上传图像文件,我使用 celery 将上传任务发送到任务队列中,但是当我上传大于 2.5mb 的图像文件时,它会因此错误而崩溃, cannot pickle '_io.BufferedRandom' object我已向 Django 添加了一些设置选项,但这并没有工作。

芹菜应用程序设置

FILE_UPLOAD_MAX_MEMORY_SIZE = 90005000
CELERY_BROKER_URL = os.environ.get('REDIS_TLS')
CELERY_ACCEPT_CONTENT = ['pickle', 'application/json']
CELERY_TASK_SERIALIZER = 'pickle'

CELERY_RESULT_BACKEND = 'django-db'
Run Code Online (Sandbox Code Playgroud)

有什么办法可以解决这个问题,提醒一下,当我单独使用 Django 上传图像文件时,无论大小它都可以工作,所以问题是由于 celery 无法处理大于 2.5MB 的文件

小智 6

您需要FILE_UPLOAD_MAX_MEMORY_SIZE在 中设置变量settings.py

例如,

FILE_UPLOAD_MAX_MEMORY_SIZE = 10 * 1024 * 1024 # 10 Mb limit
Run Code Online (Sandbox Code Playgroud)

如果需要,您还需要为 Nginx 服务器配置相同的限制。