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 07 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
python获取从命令行输入数字的方法
Apr 29 Python
Python实现新浪博客备份的方法
Apr 27 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
Python实现聊天机器人的示例代码
Jul 09 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
python 实现客户端与服务端的通信
Dec 23 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
3.从实例开始
2006/10/09 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
jquery异步请求实例代码
2011/06/21 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
python中取绝对值简单方法总结
2020/07/24 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
应聘医药代表职位求职信
2013/10/21 职场文书
工程管理造价应届生求职信
2013/11/13 职场文书
行政专员工作职责
2013/12/22 职场文书
写给女朋友的道歉信
2014/01/08 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
农业项目建议书
2014/08/25 职场文书
普通党员整改措施
2014/10/24 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
羊脂球读书笔记
2015/06/30 职场文书
干部考核工作总结2015
2015/07/24 职场文书
python某漫画app逆向
2021/03/31 Python
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android