【发布时间】:2020-11-25 04:26:27
【问题描述】:
在尝试将文件传递给 Celery 任务时,我有时会收到异常“无法序列化 '_io.BufferedReader' 对象”。这似乎发生在某些文件而不是其他文件上。端点是一个 APIView,具有以下启动任务:
from celery import signature
task = signature(
data.get('action'),
kwargs={'data': data,
'authorization': authorization,
"files": files}
).apply_async()
当请求中包含某些文件时它确实可以正常工作,但会引发其他文件的异常。
【问题讨论】:
-
好像是 celery 序列化问题,stackoverflow.com/questions/21631878/…
-
谢谢@ArakkalAbu。问题是我们无法序列化 TemporaryUploadedFile,因为它(本质上)是一个文件句柄,并且任务使用者将无权访问该磁盘。我想我可以在节点之间共享一个卷,但是序列化整个有效负载似乎更容易。
标签: django celery pickle django-celery kombu