0 Question: Impossible de diffuser un message à l'aide de céleri

question créée à Wed, May 8, 2019 12:00 AM

J'essaie d'utiliser la prise en charge intégrée du céleri pour le routage de diffusion à l'aide de Broadcast et de rabbitmq en tant que courtier. J'ai réussi à publier et à recevoir des messages à l'aide de l'échange direct par défaut. J'essaie maintenant d'utiliser l'échange de fanout fourni par rabbitmq. Pour cela, il semble que le céleri possède un support intégré utilisant la classe Broadcast.

Ma confiture de céleri ressemble à ceci:

app.conf.task_queues = (Broadcast('broadcast_tasks'),)

app.conf.task_routes = {
  'tasks.tasks.sync_channels': {
      'queue': 'broadcast_tasks',
      'exchange': 'broadcast_tasks'
  }
}

Voici comment j'ai défini ma tâche dans app /tasks /tasks.py

@app.task(name='sync_channels')
def sync_channels(data):
   logger.debug('Received here')
   pass

Voici comment je transmets un message à lapin à l'aide de céleri:

from app.tasks.tasks import sync_channels
sync_channels.delay([])

Lorsque j'ouvre l'interface utilisateur de gestion rabbitmq, je peux voir qu'un échange fanout est créé avec le nom "broadcast_tasks", mais lorsque j'essaie d'envoyer un message à la tâche sync_channels, il crée automatiquement un échange par défaut (direct) et un La file d'attente est liée à l'échange par défaut et tous mes futurs messages à la tâche sync_channels sont poussés vers l'échange par défaut. Il semble en quelque sorte que je ne sois pas en mesure de configurer la fonction de diffusion fournie par le céleri.

Vous trouverez ci-dessous des captures d'écran susceptibles de vous aider à comprendre le problème:

 Page de gestion Rabbitmq lorsque le céleri n'est pas connecté Un nouvel échange fanout nommé broadcast_tasks est créé au démarrage de célery worker Une file d'attente créée par le céleri qui se lie à l'échange broadcast_tasks [! [Un échange et une file d'attente par défaut créés lorsque j'essaie de publier un message dans la tâche sync_channels

J'ai aussi besoin de comprendre le fonctionnement de la diffusion du céleri. De plus, au lieu d’utiliser la fonction de diffusion, j’ai essayé de créer un échange fanout, mais j’ai eu du mal à lier une file d’attente à cet échange, puis à publier le message. Toute aide ou exemple sur la façon de le faire me sera utile.

Merci d'avance

    
0
0 réponses                              0                         
source placée ici