Rabbitmq 发送任务仅适用于特定用户

Rabbitmq 发送任务仅适用于特定用户,rabbitmq,celery,amqp,celery-task,rabbitmqctl,Rabbitmq,Celery,Amqp,Celery Task,Rabbitmqctl,设置:芹菜4.1、RabbitMQ 3.6.1(作为代理)、Redis(作为后端,此处不相关) 有两个用户: admin\u用户,权限为* 远程用户具有ack权限 admin\u user可以触发任务,芹菜工人使用它来处理任务 remote\u user只能触发一种类型的任务-ack,并在专用的ack队列中排队,该队列随后被ack工作者(由admin\u user使用) 远程用户通过以下代码发送任务: from celery import Celery app = Celery('remo

设置:芹菜4.1、RabbitMQ 3.6.1(作为代理)、Redis(作为后端,此处不相关)

有两个用户:

  • admin\u用户
    ,权限为
    *
  • 远程用户
    具有
    ack
    权限
admin\u user
可以触发任务,芹菜工人使用它来处理任务

remote\u user
只能触发一种类型的任务-
ack
,并在专用的
ack
队列中排队,该队列随后被
ack
工作者(由
admin\u user
使用)

远程用户通过以下代码发送任务:

from celery import Celery

app = Celery('remote', broker='amqp://remote_user:remote_pass@<machine_ip>:5672/vhost')
app.send_task('ack', args=('a1', 'a2'), queue='ack', route_name='ack')
但是我不想给远程机器
admin\u用户
权限。 知道我能做什么吗?

解决了, 我想API已更改,但为了保持RabbitMQ的当前权限,我必须使用以下路径:

旧芹菜配置文件py:(芹菜3.1)

芹菜\u config.py:(芹菜4.1)

运行任务。py:

from celery import Celery

app = Celery('remote', broker='amqp://remote_user:remote_pass@<machine_ip>:5672/vhost')
app.config_from_object('celery_config')
app.send_task('ack_task', args=('a1', 'a2'))
从芹菜进口芹菜
app=芹菜('remote',broker='amqp://remote_user:remote_pass@:5672/vhost')
app.config_from_对象('celery_config'))
app.send_task('ack_task',args=('a1','a2'))
已解决, 我想API已更改,但为了保持RabbitMQ的当前权限,我必须使用以下路径:

旧芹菜配置文件py:(芹菜3.1)

芹菜\u config.py:(芹菜4.1)

运行任务。py:

from celery import Celery

app = Celery('remote', broker='amqp://remote_user:remote_pass@<machine_ip>:5672/vhost')
app.config_from_object('celery_config')
app.send_task('ack_task', args=('a1', 'a2'))
从芹菜进口芹菜
app=芹菜('remote',broker='amqp://remote_user:remote_pass@:5672/vhost')
app.config_from_对象('celery_config'))
app.send_task('ack_task',args=('a1','a2'))
CELERY_ROUTES = {
    'ack_task': {
        'exchange': 'ack',
        'exchange_type': 'direct',
        'routing_key': 'ack'
    }
}
from celery import Celery

app = Celery('remote', broker='amqp://remote_user:remote_pass@<machine_ip>:5672/vhost')
app.config_from_object('celery_config')
app.send_task('ack_task', args=('a1', 'a2'))