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实现数通设备tftp备份配置文件示例
Apr 02 Python
python简单实现基于SSL的IRC bot实例
Jun 15 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
python字典操作实例详解
Nov 16 Python
python按行读取文件,去掉每行的换行符\n的实例
Apr 19 Python
django 自定义过滤器的实现
Feb 26 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
在python中修改.properties文件的操作
Apr 08 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 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
destoon各类调用汇总
2014/06/20 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
JS hashMap实例详解
2016/05/26 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
vue生命周期实例小结
2018/08/15 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python 处理文件的几种方式
2019/08/23 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
python中wheel的用法整理
2020/06/15 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
创业计划书模版
2014/02/05 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
致青春观后感
2015/06/09 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers