configuration: Céleri 4.1, RabbitMQ 3.6.1 (En tant que courtier), Redis (Comme backend, pas pertinent ici).send_task fonctionne uniquement avec un utilisateur spécifique
deux utilisateurs de lapin ayant:
admin_user
avec des autorisations de.* .* .*
.remote_user
avec les permissions deack ack ack
.
admin_user
peut déclencher des tâches et est utilisé par les employés de céleri pour gérer les tâches.
remote_user
ne peut déclencher un type de tâche - ack
et est dans une file d'attente en file d'attente ack
dédiée qui plus tard consommée par ack
travailleur (par admin_user
).
Le remote_user
envoie la tâche par le code suivant:
from celery import Celery
app = Celery('remote', broker='amqp://remote_user:[email protected]<machine_ip>:5672/vhost')
app.send_task('ack', args=('a1', 'a2'), queue='ack', route_name='ack')
Cela fonctionne parfaitement dans Céleri 3.1. Après la mise à niveau vers Celery 4.1, il n'envoie plus la tâche. L'appel renvoie un AsyncResult
mais je ne vois pas le message dans Fleur de céleri (ou via l'interface de gestion de lapin) ou dans les journaux.
- Essayer de définir des autorisations à
remote_user
.* .* .*
comme dans leadmin_user
- ne contribue pas. - Essayer d'ajouter
administrator
tag - n'aide pas.
Changer l'utilisateur du courtier à 'amqp://admin_user:[email protected]<machine_ip>:5672/vhost'
fonctionne le:
from celery import Celery
app = Celery('remote', broker='amqp://admin_user:[email protected]<machine_ip>:5672/vhost')
app.send_task('ack', args=('a1', 'a2'), queue='ack', route_name='ack')
Mais je ne veux pas donner une machine à distance les autorisations admin_user
. Une idée de ce que je peux faire?