django之使用celery-把耗时程序放到celery里面执行的方法


Posted in Python onJuly 12, 2019

1 在虚拟环境创建项目test和应用booktest(过程省略),然后安装所需的包

pip install celery==3.1.25
pip install celery-with-redis==3.0
pip install django-redis==3.1.17

2 配置settings,

# 数据库使用mysql
DATABASES = {
  'default': {
    'ENGINE':'django.db.backends.mysql',
    'NAME':'test',
    'USER':'root',
    'PASSWORD':'mysql',
    'HOST':'localhost',
    'PORT':3306,
  }
}

# 注册djcelery应用
INSTALLED_APPS = (
  ...
  'djcelery',
)

# celery配置

# 如报错 ImportError: No module named djcelery ,是因为没有在虚拟环境运行导致, workon h1进入虚拟环境再运行解决
import djcelery

# 初始化所有的task任务,这些任务来自booktest.task模块
djcelery.setup_loader()

# 使用redis第0个数据库,并绑定ip端口
BROKER_URL='redis://127.0.0.1:6379/0'

# 设置初始化的任务来源
CELERY_IMPORTS = 'booktest.task'

3 在应用目录booktest下面创建任务列表文件task.py

from celery import task
import time

# 加上@task装饰器,则python函数就变成一个celery任务
@task
def celery_test():
  print('hello...')
  time.sleep(5)
  print('world...')

4 创建视图,并配置相关的url配置,把耗时任务放入视图被调用

# -*- coding:utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse
from task import celery_test


# celery练习1:把耗时程序放在celery中执行
def celerytest(request):
  # function.delay(参数),celery任务celery_test调用方法
  celery_test.delay()
  return HttpResponse('ok')

# 根级url配置 test.urls
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
  url(r'^admin/', include(admin.site.urls)),
  url(r'^celery/', include('booktest.urls')),
]

# 应用下的url配置 booktest.urls
from django.conf.urls import url
import views

urlpatterns=[
  url(r'^celerytest/$', views.celerytest)
]

5 迁移,生成celery所需的数据表

python manage.py migrate

6 启动redis

sudo redis-server /etc/redis/redis.conf

7 启动worker

python manage.py celery worker --loglevel=info

8 另开一个终端窗口,启动django服务器

python manage.py runserver

9 测试,输入url,如 http://127.0.0.1:8000/celery/celerytest/,则返回'ok'

同时,会在worker对应的窗口看到耗时任务程序在此输出,即当用户请求时,不用等待太久就可以得到结果'ok',同时耗时任务程序也被异步执行,提高用户体验.

以上这篇django之使用celery-把耗时程序放到celery里面执行的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python爬虫的基本写法
Jan 08 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
python自动裁剪图像代码分享
Nov 25 Python
Python3 Random模块代码详解
Dec 04 Python
快速了解Python中的装饰器
Jan 11 Python
Python求解任意闭区间的所有素数
Jun 10 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
Python with语句用法原理详解
Jul 03 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 #Python
Django中celery执行任务结果的保存方法
Jul 12 #Python
python hough变换检测直线的实现方法
Jul 12 #Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 #Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 #Python
在交互式环境中执行Python程序过程详解
Jul 12 #Python
pip指定python位置安装软件包的方法
Jul 12 #Python
You might like
浅析php中jsonp的跨域实例
2013/06/21 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
python静态方法实例
2015/01/14 Python
python写入文件自动换行问题的方法
2019/07/05 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
斯福泰克软件测试面试题
2015/02/16 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
年度考核自我鉴定
2013/11/09 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
党风廉设责任书
2014/04/16 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
诚信考试主题班会
2015/08/17 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python