【发布时间】:2018-02-04 09:33:18
【问题描述】:
对 celery 完全陌生,想知道您是否可以在 celery 任务中的表上运行查询?
celery 正在工作,我可以将作业排队,但是,我尝试了这个,它给出了一个错误:
import celery
from celery import shared_task
from django.shortcuts import get_object_or_404
from frontendapp.models import xlinkdatabase
@shared_task
def lookup(lookup_id):
look_up_result = get_object_or_404(xlinkdatabase,MEMBER_ID=lookup_id)
return look_up_result
错误:
kombu.exceptions.EncodeError: Object of type 'xlinkdatabase' is not JSON serializable
我做错了什么?
编辑
问题是我正在尝试查看 ID 列表(在 csv 文件中输入),我想将电子邮件地址添加到该 ID 并将其写入新的 CSV 文件中。 ID/e-mail 关系在我的 psql xlinkdatabase 模型中。
查找的整个想法不是返回一个对象。我希望有一项任务在我的 psql 数据库(与模型相关)中进行查找并从该特定搜索中选择一个值。
models.py:
class xlinkdatabase(models.Model):
uniqueid = models.AutoField(primary_key=True)
MEMBER_ID = models.DecimalField(verbose_name="Member id",max_digits=19, decimal_places=0,default=Decimal('0'))
MEMBER_PRIMARY_EMAIL = models.CharField(verbose_name="Email address", max_length = 150, default="not set")
我想根据我在任务中输入的MEMBER_ID返回MEMBER_PRIMARY_EMAIL地址。
【问题讨论】:
-
您不能从任务中返回对象。您必须返回可序列化的内容。就像您可以将对象转换为 json 一样
-
我编辑了我的问题,以便更清楚。我不想直接返回一个对象。
-
那么你到底要返回什么?它是成员主要电子邮件地址的列表吗?如果是这样,那么下面的答案也将起作用
-
感谢帮助,确实不可能返回对象,只能返回一部分,或者列表。