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 中的列表解析和生成表达式
Mar 10 Python
Python多进程编程技术实例分析
Sep 16 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
Python列表和元组的定义与使用操作示例
Jul 26 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
python实现小世界网络生成
Nov 21 Python
Python实现双向链表基本操作
May 25 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
用Socket发送电子邮件
2006/10/09 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python3将变量输入的简单实例
2020/08/19 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
UNIX命令速查表
2012/03/10 面试题
工程力学专业自荐信范文
2014/03/17 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
会计专业求职信
2014/08/10 职场文书
订货会邀请函
2015/01/31 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python