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 相关文章推荐
以Flask为例讲解Python的框架的使用方法
Apr 29 Python
django之常用命令详解
Jun 30 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
python树的同构学习笔记
Sep 14 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
Django框架models使用group by详解
Mar 11 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
python Cartopy的基础使用详解
Nov 01 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 Imagick获取图片RGB颜色值
2014/07/28 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
python之wxPython菜单使用详解
2014/09/28 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
业务部经理岗位职责
2014/01/04 职场文书
2014信息公开实施方案
2014/02/22 职场文书
基督教婚礼主持词
2014/03/14 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
行政经理岗位职责
2015/04/15 职场文书
任命书格式模板
2015/09/22 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
浅谈python中的多态
2021/06/15 Python
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js
利用Redis实现点赞功能的示例代码
2022/06/28 Redis