Totalement nouveau à céleri et se demandant si vous pouvez exécuter une requête sur une table dans une tâche de céleri?est-il possible de faire une requête à l'intérieur d'un tasks.py avec céleri
céleri travaille et je peux la file d'attente des emplois, cependant, j'ai essayé cela et il donne une erreur:
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
erreur:
kombu.exceptions.EncodeError: Object of type 'xlinkdatabase' is not JSON serializable
ce que je fais mal?
EDIT
La chose est que je suis en train de passer par une liste de (l'entrée dans un fichier csv) d'ID et je veux ajouter l'adresse e-mail à cet ID et d'écrire que, dans un nouveau format CSV fichier. La relation ID/e-mail est dans mon modèle psql xlinkdatabase.
L'idée générale d'une recherche n'est pas de retourner un objet. Je veux avoir une tâche qui fait une recherche dans ma base de données psql (liée au modèle) et choisit une valeur de cette recherche spécifique.
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")
Je veux retourner l'adresse MEMBER_PRIMARY_EMAIL
sur la base MEMBER_ID
je mets dans la tâche.
Vous ne pouvez pas retourner un objet de la tâche. Vous devez retourner quelque chose qui est sérialisable. Comme vous pouvez convertir votre objet à json –
J'ai édité ma question afin qu'elle soit plus claire. Je ne veux pas retourner un objet persé. – radzia2
alors qu'est-ce que vous retournez exactement? Est-ce une liste d'adresses e-mail principales des membres? Si oui alors aussi la réponse ci-dessous fonctionnera –