在django中使用celery和RabbitMQ

之前说过安装RabbitMQ-------》Linux下安装RabbitMQ
今天讲一下django中使用celery和RabbitMQ
一.安装

pip3 install Celery
pip3 install django-celery

二.django中的配置
1.settings.py文件

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ···
    'djcelery',
]
···
import djcelery
djcelery.setup_loader()
CELERY_BROKER_URL = 'amqp://域名:5672/0' # Broker配置,这个值再RabbitMQ页面可以找到
CELERY_RESULT_BACKEND = 'amqp://域名' # BACKEND配置
RabbitMQ页面的amqp

2.在settings.py文件同级下新增celery.py文件

# coding:utf8
from __future__ import absolute_import
import os
from celery import Celery,platforms
from django.conf import settings

# 为 Celery 命令行程序设置了 DJANGO_SETTINGS_MODULE 变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings')
#创建了一个实例
app = Celery('myshop')
#加载项目设置中任意的定制化配置
app.config_from_object('django.conf:settings')
#在每个应用路径下查找 task.py 来加载定义在其中的异步任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
#C_FORCE_ROOT =true用root权限执行
platforms.C_FORCE_ROOT = True

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

3.修改同级的init.py文件

from __future__ import absolute_import
from .celery import app as celery_app
__all__=['celery_app']

4.在应用目录下新建tasks.py文件,引入你应用的异步任务

from celery import shared_task
from django.core.mail import send_mail

@shared_task
def order_created():
    subject = '标题'
    message = '一句话'
    mail_sent = send_mail(subject, message,'发送邮箱号',[接收人邮箱号])
    return mail_sent

5.把异步任务添加到需要的视图中,我是添加在订单完成后给用户发送提醒邮件这里
在views.py 文件中

···
from .tasks import order_created
···
order_created.delay()
···

三.运行celery worker

 python3 manage.py celery worker -c 4 --loglevel=info
运行结果

你可能感兴趣的:(在django中使用celery和RabbitMQ)