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中的集合类型操作符
Aug 19 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
Python面向对象进阶学习
May 21 Python
如何使用python操作vmware
Jul 27 Python
Python assert语句的简单使用示例
Jul 28 Python
详解Python time库的使用
Oct 10 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
Python 微信公众号文章爬取的示例代码
Nov 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
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
node.js中的socket.io的广播消息
2014/12/15 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
Vuex的API文档说明详解
2020/02/05 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
python判断windows系统是32位还是64位的方法
2015/05/11 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
25岁生日感言
2014/01/13 职场文书
教师个人鉴定材料
2014/02/08 职场文书
党支部公开承诺书
2014/03/28 职场文书
讲解员培训方案
2014/05/04 职场文书
中华魂演讲稿
2014/05/13 职场文书
县级文明单位申报材料
2014/05/23 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
前台岗位职责
2015/02/13 职场文书
python 提取html文本的方法
2021/05/20 Python
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers