Celery安装与在django中的使用

celery是一个基于python开发的分布式异步消息任务队列
它能将从客户端获取消息任务,然后交给中间人准备处理,再从中间人的消息队列中取出消息任务交由服务端程序处理
当django服务器需要处理耗时操作时,如果不利用异步消息队列将可能造成服务器空闲等待,浪费大量的时间

一、安装

Celery

标准Celery库可以直接pip安装

pip install celery
RabbitMQ

celery的运行需要一个发送和接收消息的解决方案,通常以独立服务形式出现的中间人,常用RabbitMQ
RabbitMQ安装方法详见
https://www.rabbitmq.com/download.html

Redis

Redis是一个实时数据库,也可以作为中间人,如果选择Redis,可以直接捆绑安装

pip install -U celery[redis]

二、在django中使用Celery

1、创建celery目录

直接在django项目文件夹中创建celery目录
在目录中创建一个__init__.py文件,将其变成一个可调用python包

2、在celery目录中创建一个配置文件 config.py

写入代码

#配置文件
broker_url='redis://127.0.0.1/3'

这里使用redis作为中间人,配置文件完成

3、创建启动文件 main.py

写入代码

#启动文件
from celery import Celery

#告知celery使用django的配置文件进行配置
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
    os.environ['DJANGO_SETTINGS_MODULE']='django_project.settings.dev'

#创建应用,注册django项目名称
app =Celery('django_project')

#导入celery的配置文件
app.config_from_object('celery_tasks.config')

4、创建任务

在celery目录中创建一个任务文件夹
同样在里面创建一个__init__.py文件,将其变成一个可调用python包

创建一个任务文件 task.py

该任务为发送邮件,写入代码

#在当前的tasks里面书写邮件发送任务
from django.core.mail import send_mail
from django.conf import settings
from celery_tasks.main import app

@app.task(name='send_mail')
def send_email(email_url,url_string):
    send_mail(subject='邮件激活',from_email=settings.EMAIL_FROM,recipient_list=[email_url],html_message=url_string,message='激活')

send_email是一个自定义任务函数,使用装饰器将任务注册到celery可处理任务中

5、将任务注册到celery主函数

在main.py文件中添加代码

#任务
app.autodiscover_tasks(['celery_tasks.email',])

6、运行celery

在django项目目录下执行命令

celery -A tasks worker --loglevel=info

如果是在windows环境下,则执行代码

celery -A celery_tasks.main worker --pool=solo -l info
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值