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 字符串split的用法分享
Mar 23 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
简单的python协同过滤程序实例代码
Jan 31 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
python__new__内置静态方法使用解析
Jan 07 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 Python
python内置进制转换函数的操作
Jun 02 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
配置PHP使之能同时支持GIF和JPEG
2006/10/09 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
js身份证验证超强脚本
2008/10/26 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
python缩进区别分析
2014/02/15 Python
python字符串连接的N种方式总结
2014/09/17 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
Numpy之random函数使用学习
2019/01/29 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
在校硕士自我鉴定
2014/01/23 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
导游词之天津盘山
2019/11/01 职场文书