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函数的周期性执行实现方法
Aug 13 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
python统计多维数组的行数和列数实例
Jun 23 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
解决Python中回文数和质数的问题
Nov 24 Python
python groupby 函数 as_index详解
Dec 16 Python
python中property和setter装饰器用法
Dec 19 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
python能在浏览器能运行吗
Jun 17 Python
python中count函数知识点浅析
Dec 17 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
Python中处理unchecked未捕获异常实例
2015/01/17 Python
Python Requests 基础入门
2016/04/07 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Python装饰器知识点补充
2018/05/28 Python
python爬取淘宝商品销量信息
2018/11/16 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
python中列表的含义及用法
2020/05/26 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
政治学求职信
2014/06/03 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
安全学习心得体会范文
2016/01/18 职场文书
Python如何将list中的string转换为int
2022/07/15 Ruby