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中__new__与__init__方法的区别详解
May 04 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
pygame实现非图片按钮效果
Oct 29 Python
python爬虫实例之获取动漫截图
May 31 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
python rsa-oaep加密的示例代码
Sep 23 Python
详解在OpenCV中如何使用图像像素
Mar 03 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
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
JS中数组重排序方法
2016/11/11 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
详解Vue方法与事件
2017/03/09 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Python人脸识别初探
2017/12/21 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
详解Django CAS 解决方案
2019/10/30 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
什么是Python变量作用域
2020/06/03 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
市级优秀班主任事迹材料
2014/05/13 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
小英雄雨来观后感
2015/06/09 职场文书
我的中国梦主题班会
2015/08/14 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
oracle索引总结
2021/09/25 Oracle