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如何实现excel数据添加到mongodb
Jul 30 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
django模板语法学习之include示例详解
Dec 17 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
手动安装python3.6的操作过程详解
Jan 13 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
python和JavaScript哪个容易上手
Jun 23 Python
python如何将图片转换素描画
Sep 08 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
模仿OSO的论坛(五)
2006/10/09 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
Node.js使用Angular简单示例
2018/05/11 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
收银出纳员岗位职责
2014/02/23 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Mysql 文件配置解析介绍
2022/05/06 MySQL