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开发之thread线程基础实例入门
Nov 11 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
python使用scrapy发送post请求的坑
Sep 04 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
python版本五子棋的实现代码
Dec 11 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
Python从入门到精通之环境搭建教程图解
Sep 26 Python
python add_argument()用法解析
Jan 29 Python
Python grpc超时机制代码示例
Sep 14 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
解析php中call_user_func_array的作用
2013/06/07 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php上传excel表格并获取数据
2017/04/27 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
js变换显示图片的实例
2013/04/16 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
angular ng-click防止重复提交实例
2017/06/16 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
深入解析Python中的上下文管理器
2016/06/28 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
Python实现最常见加密方式详解
2019/07/13 Python
Django发送邮件功能实例详解
2019/09/02 Python
python实现与redis交互操作详解
2020/04/21 Python
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
4s客服专员岗位职责
2013/12/01 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
远程研修随笔感言
2014/02/10 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书