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中字典的setdefault()方法教程
Feb 07 Python
Python内置函数delattr的具体用法
Nov 23 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
python django model联合主键的例子
Aug 06 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
python输出pdf文档的实例
Feb 13 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
在 Python 中使用 MQTT的方法
Aug 18 Python
Python自定义sorted排序实现方法详解
Sep 18 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
php2html php生成静态页函数
2008/12/08 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
python中子类调用父类函数的方法示例
2017/08/18 Python
Python将图片转换为字符画的方法
2020/06/16 Python
Python 元类实例解析
2018/04/04 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
python读文件的步骤
2019/10/08 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
python实现银行账户系统
2021/02/22 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
党员实事承诺书
2014/03/26 职场文书
献爱心倡议书
2014/04/14 职场文书
网络编辑求职信
2014/04/30 职场文书
五水共治一句话承诺
2014/05/30 职场文书
小学生运动会报道稿
2014/09/12 职场文书
2014年安全员工作总结
2014/11/13 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle