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错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
python获取本机所有IP地址的方法
Dec 26 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
python 获取字典键值对的实现
Nov 12 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 Python
python之随机数函数的实现示例
Dec 30 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数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
Three.js基础学习教程
2017/11/16 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
Python操作列表之List.insert()方法的使用
2015/05/20 Python
python实现接口并发测试脚本
2019/06/25 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
四年级下册教学反思
2014/02/01 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
清洁员岗位职责
2015/02/15 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
pytorch 如何使用float64训练
2021/05/24 Python
详解Python中的进程和线程
2021/06/23 Python
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫
Java 定时任务技术趋势简介
2022/05/04 Java/Android
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers