celery 报错: Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)
2023-03-07 09:47:00 时间
出错环境:
- windows 10
- python 3.6.8
- django 1.11.26
- celery 4.3.0
错误日志:
同样的代码在 Mac 和 centos 环境下无此错误
[2019-12-16 11:26:23,480: CRITICAL/MainProcess] Can't decode message body: ContentDisallowed('Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)',) [type:'application/x-python-serialize' encoding:'binary' headers:{}]
body: b'\x80\x02}q\x00(X\x04\x00\x00\x00taskq\x01X\x1f\x00\x00\x00apps.share.tasks.post_to_beiqiaq\x02X\x02\x00\x00\x00idq\x03X$\x00\x00\x003f15b89f-23b5-4fae-aeb1-09dc203f4002q\x04X\x04\x00\x00\x00argsq\x05]q\x06X\x06\x00\x00\x00kwargsq\x07}q\x08X\x07\x00\x00\x00retriesq\tK\x00X\x03\x00\x00\x00etaq\nNX\x07\x00\x00\x00expiresq\x0bNX\x03\x00\x00\x00utcq\x0c\x88X\t\x00\x00\x00callbacksq\rNX\x08\x00\x00\x00errbacksq\x0eNX\t\x00\x00\x00timelimitq\x0fNN\x86q\x10X\x07\x00\x00\x00tasksetq\x11NX\x05\x00\x00\x00chordq\x12Nu.' (274b)
Traceback (most recent call last):
File "e:\py_virtualenv\joyoo\lib\site-packages\celery\worker\consumer\consumer.py", line 546, in on_task_received
type_ = message.headers['task'] # protocol v2
KeyError: 'task'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "e:\py_virtualenv\joyoo\lib\site-packages\celery\worker\consumer\consumer.py", line 551, in on_task_received
payload = message.decode()
File "e:\py_virtualenv\joyoo\lib\site-packages\kombu\message.py", line 193, in decode
self._decoded_cache = self._decode()
File "e:\py_virtualenv\joyoo\lib\site-packages\kombu\message.py", line 198, in _decode
self.content_encoding, accept=self.accept)
File "e:\py_virtualenv\joyoo\lib\site-packages\kombu\serialization.py", line 253, in loads
raise self._for_untrusted_content(content_type, 'untrusted')
kombu.exceptions.ContentDisallowed: Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)
解决方法:
settings.py 配置(window 用 pickle 序列化)
# celery 内容等消息的格式设置
if os.name != "nt":
# Mac and Centos
CELERY_ACCEPT_CONTENT = ['application/json', ]
CELERY_TASK_SERIALIZER = 'json'
# CELERY_RESULT_SERIALIZER = 'json'
else:
# windows
CELERY_ACCEPT_CONTENT = ['pickle', ]
CELERY_TASK_SERIALIZER = 'pickle'
# CELERY_RESULT_SERIALIZER = 'pickle'
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的