設置: Celery 4.1,RabbitMQ 3.6.1(作爲經紀人),Redis(作爲後端,這裏不相關)。send_task只適用於特定用戶
有兩個兔子用戶:
admin_user
與.* .* .*
權限。remote_user
權限爲ack ack ack
。
admin_user
可觸發任務並由芹菜工作人員用來處理任務。
remote_user
僅可以觸發一個類型的任務 - ack
和在專用ack
隊列後來排入由ack
工人被消耗(由admin_user
)。
的remote_user
通過下面的代碼發送任務:
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')
這完全適用於芹菜3.1。升級到Celery 4.1後,它不再發送任務。該呼叫返回AsyncResult
,但我沒有在芹菜花(或通過兔子管理UI)或日誌中看到該消息。
- 嘗試設置權限
remote_user
.* .* .*
作爲admin_user
- 沒有幫助。 - 試圖添加
administrator
標記 - 沒有幫助。
代理的用戶更改爲 'amqp://admin_user:[email protected]<machine_ip>:5672/vhost'
不工作:
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')
但我不希望給遠程機器admin_user
權限。 任何想法我可以做什麼?