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