Django中使用celery完成异步任务的示例代码


Posted in Python onJanuary 23, 2018

本文主要介绍如何在django中用celery完成异步任务,web项目中为了提高用户体验可以对一些耗时操作放到异步队列中去执行,例如激活邮件,后台计算操作等等 当前项目环境为: django==1.11.8 celery==3.1.25 redis==2.10.6 pip==9.0.1 python3==3.5.2 django-celery==3.1.17

一,创建Django项目及celery配置

1,创建Django项目

1>打开终端输入:django-admin startproject TestCelery 创建django项目('TestCelery'是项目名称)

2>进行TestCelery在终端输入指令:django-admin startapp testcelery 创建应用('testcelery为应用名称')

2, 为celery设置环境变量

1>项目中在TestCelery中创建celery.py文件(与setting.py同级)输入以下内容:         

from celery import Celery
from django.conf import settings
import os

# 为celery设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TestCelery.settings')

# 创建应用
app = Celery('testcelery')

# 酸配置应用
app.conf.update(
  
  # 本地Redis服务器
  BROKER_URL='redis://127.0.0.1:6379/2',
)

app.autodiscover_tasks(settings.INSTALLED_APPS)

2>当前项目目录如下图所示:

 Django中使用celery完成异步任务的示例代码                                

二,创建任务tasks,编写视图View及urls

1, 在testcelery应用中新建tasks.py文件,并写入要进行处理的任务:         

from TestCelery.celery import app
from time import sleep
@app.task
def start_running(nums):
  print('***>%s<***' %nums)
  print('--->>开始执行任务<<---')
  for i in range(10):
    print('>>'*(i+1))
    sleep(1)
  print('>---任务结束---<')

2,编写view视图,并写入调用client的方法

from django.views import View
from django.http import HttpResponse
from .tasks import start_running
from time import sleep
# Create your views here.

class IdexView(View):
  def get(self, request):
    print('>=====开始发送请求=====<')
    for i in range(10):
      print('>>',end='')
      sleep(0.1)

    start_running.delay('》》》》》我是传送过来的《《《《《')
    return HttpResponse('<h2> 请求已发送 </h2>')

3,编写testcelery应用的usrls

from django.conf.urls import url
from .views import *
urlpatterns = [
  url(r'^$', IdexView.as_view()),
]

4,当前项目目录如下图所示:

Django中使用celery完成异步任务的示例代码 

三,运行项目,开启worker

1, 运行项目在当前项目下输入启动服务指令:python manager.py runserver,出现如下图所示即代表运行成功:

Django中使用celery完成异步任务的示例代码

2,开启worker另在当前项目下另打开一个终端,输入指令: celery -A TestCelery worker --loglevel=DEBUG,启动后如下如示:

Django中使用celery完成异步任务的示例代码 

3,调用任务

1>打开浏览器,输入http://127.0.0.1:8000/send/  进行访问

Django中使用celery完成异步任务的示例代码

2> woker监听到任务请求时,就会执行耗时任务,如下图所示:

Django中使用celery完成异步任务的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
Python打印输出数组中全部元素
Mar 13 Python
python组合无重复三位数的实例
Nov 13 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
python的常见矩阵运算(小结)
Aug 07 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
python实现tail实时查看服务器日志示例
Dec 24 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 Python
用Python生成会跳舞的美女
Jan 18 Python
python3 发送任意文件邮件的实例
Jan 23 #Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 #Python
Python实现PS图像明亮度调整效果示例
Jan 23 #Python
matplotlib绘图实例演示标记路径
Jan 23 #Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 #Python
Python实现PS图像抽象画风效果的方法
Jan 23 #Python
matplotlib作图添加表格实例代码
Jan 23 #Python
You might like
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
PHP安全上传图片的方法
2015/03/21 PHP
JS 建立对象的方法
2007/04/21 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
原生js获取left值和top值的三种方法
2017/08/02 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
Python实现全角半角转换的方法
2014/08/18 Python
python发送邮件脚本
2018/05/22 Python
Python实现登陆文件验证方法
2018/10/06 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Python descriptor(描述符)的实现
2020/11/15 Python
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
校长先进事迹材料
2014/02/01 职场文书
英语国培研修感言
2014/02/13 职场文书
大学生个人自荐信
2014/02/24 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
财务经理岗位职责
2015/01/31 职场文书
vue使用watch监听属性变化
2022/04/30 Vue.js
Redis基本数据类型Set常用操作命令
2022/06/01 Redis