安装rabbitmq
sudo apt-get install rabbitmq-server
添加用户,myuser为用户名,mypassword为用户密码
sudo rabbitmqctl add_user myuser mypassword
新增管理员用户 myuser为用户名密码,administrator为管理员标签
sudo rabbitmqctl set_user_tags myuser administrator
添加虚拟环境
sudo rabbitmqctl add_vhost vhost
设置用户在虚拟环境下拥有所有权限
sudo rabbitmqctl set_permissions -p vhost myuser ".*" ".*" ".*"
启用插件
rabbitmq-plugins enable rabbitmq_management
可以用刚设置的账户登录管理页面
http://localhost:15672
安装django-celery,flower
pip install django-celery==3.2.2
pip install flower==0.9.2
配置过程
-
在工程settings.py中INSTALLED_APPS中加入djcelery
-
添加broker设置
broker也就是rabbitmq端,是用来存储消息的。在settings中添加一下代码
import djcelery
djcelery.setup_loader()
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
BROKER_URL= 'amqp://myuser:password@服务器ip:5672/vhost'
- 在settings.py同目录下添加celery.py文件
替换掉你的工程名称即可
# coding:utf8
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的工程名称.settings')
app = Celery('proj')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
- 修改工程目录里面的init.py文件
from __future__ import absolute_import
from .celery import app as celery_app
- 注册任务
from __future__ import absolute_import
from 你的工程名称.celery import app
@app.task()
def add(x, y):
return x + y
from 你的工程名称.celery import app
的app就是刚刚我们弄的。
-
启动celery
注意celery和flower是分开启动的
start /b celery -A 你的工程名.celery:app worker -l info
(添加start /b 可以让程序后台运行,如果是linux系统则在命令后面添加 & 即可) -
启动flower
celery -A 你的工程名.celery:app flower -l info
访问(localhost:5555)