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 相关文章推荐
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
python算的上脚本语言吗
Jun 22 Python
Python错误的处理方法
Jun 23 Python
Python在线和离线安装第三方库的方法
Oct 31 Python
python中time包实例详解
Feb 02 Python
python 定义函数 返回值只取其中一个的实现
May 21 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
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
Python中的rjust()方法使用详解
2015/05/19 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
教师自我剖析材料
2014/09/29 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
委托收款证明
2015/06/23 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android