kombu.exceptions.EncodeError: User is not JSON serializable(kombu.exceptions.EncodeError:用户不可JSON序列化)
本文介绍了kombu.exceptions.EncodeError:用户不可JSON序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有Django 1.11.5应用和芹菜4.1.0,我一直收到:
kombu.exceptions.EncodeError: <User: testuser> is not JSON serializable
我的settings.py:
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_RESULT_BACKEND = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Makassar'
CELERY_BEAT_SCHEDULE = {}
tasks.py
from __future__ import absolute_import, unicode_literals
from celery import task
from django.contrib.auth.models import User
@task(serializer='json')
def task_number_one():
user = User.objects.create(username="testuser", email="test@test.com", password="pass")
return user
我在视图中调用任务:
def form_valid(self, form):
form.instance.user = self.request.user
task_number_one.delay()
return super().form_valid(form)
推荐答案
该错误是因为当您返回User
实例时,芹菜需要来自任务函数的JSON
数据。
如何解决此问题?
您没有在任何地方使用该返回数据,因此您不必返回它。也就是说,您可以从任务函数中删除return user
。
或者
从任务函数返回Json
数据也可以解决此问题
解决方案%1
@task(serializer='json')
def task_number_one():
user = User.objects.create(username="testuser", email="test@test.com", password="pass")
解决方案2
@task(serializer='json')
def task_number_one():
user = User.objects.create(username="testuser", email="test@test.com", password="pass")
# return some json data instead of `USER` instance
return {"status": True} # Change is here
这篇关于kombu.exceptions.EncodeError:用户不可JSON序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:kombu.exceptions.EncodeError:用户不可JSON序列化
基础教程推荐
猜你喜欢
- 将 YAML 文件转换为 python dict 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01