2016-06-21 3 views
0

J'ai intégré une API avec mon site Django. Pour une commande complète via l'API, 5 demandes et réponses doivent être envoyées et reçues. Les 2 dernières demandes ne sont pas très importantes à envoyer séquentiellement. J'ai assigné ces 2 demandes à une tâche de céleri.Céleri Tâches non assignées par le courtier

Scénario: J'envoie une requête pour traiter 10 commandes, de sorte que chaque commande a 5 requêtes dont 2 sont affectées à la tâche céleri. Par conséquent, le céleri a un total de 10 tâches qui seront assignées par le courtier. Chacune de ces tâches aura 2 requêtes. Résultat: Céleri ne se voit pas attribuer toutes les 10 tâches pendant l'appel de l'API, donc pour chaque ensemble de 10 commandes, celles qui sont complétées sont soit 5, soit 4 ou 6 et ainsi de suite. Chaque fois qu'il y a 2 ou 3 tâches qui ne sont pas traitées. Je ne suis pas sûr de ce qui cause la tâche à ne pas être assigné par le courtier. J'utilise la commande delay() pour appeler les tâches. Mon fichier task.py ressemble un peu à ce

from celery import shared_task 
from celery.utils.log import get_task_logger 

logger = get_task_logger(__name__) 


@shared_task 
def process_jobs(client_obj, job, **kwargs): 

    # do task related work 

L'appel à cette tâche ressemble à ce

process_jobs.delay(self, job, **response_arg) 

process_jobs contient 2 requêtes HTTP qui est fait successivement l'un après l'autre avec les réponses enregistrées dans la base de données .

S'il vous plaît conseiller

Répondre

0

remplacer

process_jobs.delay(self, job, **response_arg) 

avec

process_jobs.delay(job, **response_arg) 

Si cela ne résout pas votre problème, s'il vous plaît partager plus de détails pour trouver une solution.

+0

Bien sûr, laissez-moi vérifier et vous le ferons savoir. –

+0

une mise à jour? @ user778907 –