Django异步编程

Django异步编程

​ 在之前的开发过程当中,django都是使用单线程结构,比如,请求一个视图,视图向数据库写入30000条数据,那么整个页面进入等待状态,类似的需求是有的,但是用户体验不可以是这样:比如,发短信,django调用爬虫,大规模数据写入。

​ 异步编程的底层可以用多线程实现,但是在开发当前有一个很成熟的异步编程框架加载 celery(芹菜),现在要学习的是django封装好的celery框架,django-celery。

Celery框架认识

​ Celery 是一个简单的,灵活的,可靠的python编写处理大量消息的分布式系统。

​ 分布式:就是将任务分发个多个客户端进行处理的模式。通常在python当中使用的分布式有两种:

​ 1、redis分布式,利用redis广告模式进行分布式

​ 2、使用celery进行分布式

分布式开发,一定涉及一个设计模式:生产消费者模式

Celery基本原理

在这里插入图片描述

使用celery需要的组件

1、pip install celery

2、需要消息队列①rabbitmq 消息队列②Redis③其他数据库

在整个celery开发的过程当中知道要有存放任务的容器,这个容器可以是redis数据库,可以是其他数据库,还可以是rabbitmq消息队列。如果任务有结果还需要设置一个容器来存放结构。

使用django-celery+redis进行异步任务处理

1,下载安装包
Pip install django-celery=3.2.2
Pip install django-redis=4.10.0
pip install redis==2.10.6
Pip install flower #可视化平台
2,配置settings

在这里插入图片描述

在这里插入图片描述

3,给celery创建独立的App

在这里插入图片描述

4,celery配置,在项目的主目录下创建celery.py文件,并进行配置

在这里插入图片描述

# celery配置
from __future__ import absolute_import,unicode_literals
import os
from celery import Celery
from django.conf import settings

#设置celery执行的环境变量,执行django项目的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE','CeleryTask.settings')

# 创建celery应用
app = Celery('art_project') #celery应用的名称
app.config_from_object('django.conf:settings')#加载的配置文件

#如果在工程的应用中创建了task.py模块,那么Celery应用就会自动去检测创建的任务,
# 比如你添加一个任务,在django中会实时的检测出来。
app.autodiscover_tasks(lambda :settings.INSTALLED_APPS)
5,在celery独立的app下编写任务文件,文件名必须是task.py

在这里插入图片描述

6,因为我们安装了djcelery app,所以,我们需要同步数据库
#同步数据库
python manage.py check
python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

7,celery的任务需要使用delay函数触发,所以编辑一个视图,并且配置路由
视图

在这里插入图片描述

路由

在这里插入图片描述

8,启动celery之前需要启动Redis数据库

在这里插入图片描述

9,Redis数据库启动之后,启动celery
python manage.py celery worker --loglevel=info

在这里插入图片描述

10,启动项目,触发delay函数

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值