Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Utiliser Celery pour consomer des données AMQP

+2 votes

J'ai des données Netflow qui sont collectées via le programe PMACCT (collecteur de données réseau), et qui les envoi au format JSON dans un queue AMQP.
L'objectif est de récupérer les données (idéalement sur plusieurs machines pour le coté scalable), de l'analyser, ajouter d'autres informations et de les pousser dans un backend de type NoSQL.

Pour l'instant, j'utilise un consommateur "maison" en utilisant Pika, mais j'ai de faible performance, j'aurais besoin de paralléliser mes calculs. J'ai regardé du coté de multiprocessing, mais je préférais utiliser une solution existante et rodée pour faire ce genre de tache.

Est-il possible d'utiliser Celery pour consommer ces données ? Les données envoyées par PMACCT ne correspondent pas au format attendu par une tache Celery (http://celery.readthedocs.org/en/latest/internals/protocol.html)

demandé 26-Mar-2015 par lchabert (120 points)
edité 27-Mar-2015 par max

1 Réponse

+1 vote

Une solution serait de faire un proxy : un client AMQP normal (genre avec ça) qui tourne en tache de fond et quand il reçoit un message AMPQ, tu publies une tâche Celery manuellement (tatache.applyasync()).

répondu 30-Mar-2015 par Sam (4,978 points)

Quel va être l'avantage de publier une autre tache dans celery ? La gestion des thread integré ? La répartition de charge ?

Parce que tu coup chaque objet JSON envoyé dans la queue AMQP, va de nouveau être mis en queue pour un traitement ultérieur.

Celery ne gère pas que la queue, il gère aussi la notion de tâche. Et donc le status de la tâche, la récupération des erreurs, etc. Tu peux te créer une mini version de celery à la main qui fait ça pour toi, parfois il faut se simplifier la vie.

...