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 16 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
构建Python包的五个简单准则简介
Jun 15 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
详解python的argpare和click模块小结
Mar 31 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
wxPython之wx.DC绘制形状
Nov 19 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
pytorch--之halfTensor的使用详解
May 24 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模拟登陆的实现方法分析
2015/01/09 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Python fileinput模块使用实例
2015/05/28 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python出现segfault错误解决方法
2016/04/16 Python
Python随机数random模块使用指南
2016/09/09 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
快速查找Python安装路径方法
2020/02/06 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
应届生会计求职信
2013/11/11 职场文书
财务主管自我鉴定
2014/01/17 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书