web-dev-qa-db-fra.com

Céleri - Comment envoyer une tâche depuis une machine distante?

Nous avons un serveur exécutant des travailleurs céleri et une file d'attente Redis. Les tâches sont définies sur ce serveur.
Je dois pouvoir appeler ces tâches depuis une machine distante.
Je sais que cela se fait en utilisant send_task mais je n'ai toujours pas compris COMMENT? Comment puis-je dire send_task où est la file d'attente? Où dois-je transmettre les paramètres de connexion (ou tout ce qui est nécessaire)? Je cherche depuis des heures et tout ce que je peux trouver c'est ceci:

from celery.execute import send_task
send_task('tasks.add')

Eh bien, cela signifie que j'ai également besoin de celery sur ma machine appelante. Mais quoi d'autre dois-je configurer?

28
user1102018

Cela peut être un moyen: en créant un objet Celery et en utilisant send_task à partir de cet objet, l'objet peut avoir la configuration pour trouver le courtier.

from celery import Celery
celery = Celery()
celery.config_from_object('celeryconfig')
celery.send_task('tasks.add', (2,2))

celeryconfig est un fichier contenant la configuration du céleri, il existe d'autres façons de configurer la configuration sur l'objet céleri.

40
Leonardo Ruiz

sur la machine distante, démarrez céleri avec le broker_url pointant vers la machine sur laquelle vous souhaitez exécuter les tâches. Ensuite, soumettez simplement les tâches (si vous avez des files d'attente spécifiques à soumettre, ajoutez les clés de routage appropriées).

0
MICHAEL SMITH

Il existe plusieurs façons de définir des règles de routage, la plus générale étant l'objet routeur personnalisé. Dans tous les cas, l'appelant fournit simplement un routing_key paramètre dans send_task, delay ou apply_async et le routeur détermine dans quelle file d'attente envoyer la tâche.

0
Chris Johnson