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科学计算环境推荐——Anaconda
Jun 30 Python
Python生成验证码实例
Aug 21 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
浅述python中深浅拷贝原理
Sep 18 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python在不同条件下的输入与输出
Feb 13 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
Python如何对齐字符串
Jul 30 Python
如何在python中处理配置文件代码实例
Sep 27 Python
python随机打印成绩排名表
Jun 23 Python
分享Python获取本机IP地址的几种方法
Mar 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
德生9700DX电路分析
2021/03/02 无线电
php flv视频时间获取函数
2010/06/29 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
Python线程中对join方法的运用的教程
2015/04/09 Python
Python中datetime常用时间处理方法
2015/06/15 Python
Python反射的用法实例分析
2018/02/11 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
python十进制转二进制的详解
2020/02/07 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
教师考察材料范文
2014/06/03 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
市场营销计划书范文
2015/01/16 职场文书
2015年母亲节寄语
2015/03/23 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android