broker_url = 'amqp://admin:123456@192.168.124.41:5672'
backend='redis://localhost:6379/2'
import time
from celery import Celery
broker_url = 'amqp://admin:123456@localhost:5672'
app = Celery(
'mq_tasks',
broker=broker_url,
backend='redis://localhost:6379/2'
)
app.config_from_object('celery_conf')
@app.task
def add(x, y):
time.sleep(4)
print(x+y)
return x + y
注意:
使用admin用户连接rabbitmq:以下都可以
'amqp://admin:123456@localhost.187:5672'
'amqp://admin:123456@0.0.0.0:5672'
'amqp://admin:123456@192.168.124.41:5672'
使用guest用户连接rabbitmq:不能用ip
'amqp://guest:guest@localhost:5672'
'amqp://guest:guest@0.0.0.0:5672'
设置vhost权限:
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
set_permissions设置vhost的权限
/指vhost的路径
admin 用户,这里broker的用户配置一致
后面的几个就是权限的配置
需要注意的坑:
librabbitmq建议不用装到python环境中,如果装了,就不能使用amqp://...
librabbitmq安装以后,可以使用pyamqp://
由librabbitmq导致的问题:
TypeError: can't pickle memoryview objects
Received and deleted unknown message