django框架下celery+rabbitmq+flower完成异步任务
[转载请注明出处:]
http://www.cnblogs.com/yukityan/p/8035787.html
环境: ubuntu16.04 64位
安装:
sudo apt-get install rabbitmq-server
pip3 install celery
pip3 install flower
相关命令及其配置:
rabbitmq:
sudo rabbitmq-server -detached(后台启动服务)
sudo rabbitmqctl status(查看状态)
sudo rabbitmqctl stop_app(停止应用)
sudo rabbitmqctl start_app(启动应用)(可配合停止应用达到清空队列的作用)
sudo abbitmqctl reset(清空队列)
sudo rabbitmqctl add_user xxx xxx (添加用户)
sudo rabbitmqctl list_users(列出用户)
celery:
celery -A proj worker -l info(1.位于项目目录, 2.项目名:proj)
celery配置:
"""
proj/celery.py(与settings.py文件位于同一文件夹)
"""
import os
from celery import Celery
from django.conf import settings
# 设置运行环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
# 实例化一个Celery
app = Celery('proj')
# 设置celery配置文件(此处为proj/settings.py)
app.config_from_object('django.conf:settings')
# 自动发现位于INSTALLED_APPS中app里面的task任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
""" proj/__init__.py """ # 确保django运行之前,celery启动完成 from .celery import app as celery_app
flower:
flower -A proj --port=5555 # (默认端口位5555, --port可以自定义端口)
celery flower -A proj --address=127.0.0.1 --port=5555
celery flower -A proj --broker=amqp://guest:guest@localhost:5672// (设置broker, 此处位rabbitmq)