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制作获取网站目录的图形化程序
May 04 Python
Windows下python2.7.8安装图文教程
May 26 Python
对python中使用requests模块参数编码的不同处理方法
May 18 Python
Python键盘输入转换为列表的实例
Jun 23 Python
python实现五子棋游戏
Jun 18 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
Python 下载及安装详细步骤
Nov 04 Python
使用Python实现Wake On Lan远程开机功能
Jan 22 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP4.04简明安装
2006/10/09 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
angularJS开发注意事项
2018/05/26 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python字典操作实例详解
2017/11/16 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
国外平面设计第一市场:99designs
2016/10/25 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
执行力心得体会
2013/12/31 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
体育活动总结范文
2014/05/04 职场文书
积极向上的团队口号
2014/06/06 职场文书
干部对照检查材料范文
2014/08/26 职场文书
法定授权委托证明书
2014/09/27 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python