对芹菜完全不熟悉,并想知道你是否可以在芹菜任务内的桌子上运行查询?
芹菜正在工作,我可以排队工作,但是,我试过这个并且它给出了一个错误:
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 /电子邮件关系在我的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_PRIMARY_EMAIL
返回MEMBER_ID
地址。
答案 0 :(得分:0)
来自芹菜文档
客户端和工作人员之间传输的数据需要序列化,因此Celery中的每条消息都有一个content_type标头,用于描述用于对其进行编码的序列化方法。
所以你不能从芹菜工人那里归还一个物品。
解决方案:
from django.core import serializers
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 serializers.serialize("json", look_up_result)