django异步任务(celery+rabbitmq+flower可视化)

安装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

配置过程

  1. 在工程settings.py中INSTALLED_APPS中加入djcelery

  2. 添加broker设置
    broker也就是rabbitmq端,是用来存储消息的。在settings中添加一下代码

import djcelery
djcelery.setup_loader()

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
BROKER_URL= 'amqp://myuser:password@服务器ip:5672/vhost'
  1. 在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)

  1. 修改工程目录里面的init.py文件
from __future__ import absolute_import
from .celery import app as celery_app
  1. 注册任务
from __future__ import absolute_import
from 你的工程名称.celery import app

@app.task()
def add(x, y):
    return x + y

from 你的工程名称.celery import app 的app就是刚刚我们弄的。

  1. 启动celery
    注意celery和flower是分开启动的
    start /b celery -A 你的工程名.celery:app worker -l info
    (添加start /b 可以让程序后台运行,如果是linux系统则在命令后面添加 & 即可)

  2. 启动flower
    celery -A 你的工程名.celery:app flower -l info
    访问(localhost:5555)
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_26973089/article/details/84101857
今日推荐