django响应返回的常用方法(Django异步任务之Celery的基本使用)
django响应返回的常用方法
Django异步任务之Celery的基本使用Celery
许多Django应用需要执行异步任务, 以便不耽误http request的执行. 我们也可以选择许多方法来完成异步任务, 使用Celery是一个比较好的选择, 因为Celery有着大量的社区支持, 能够完美的扩展, 和Django结合的也很好. Celery不仅能在Django中使用, 还能在其他地方被大量的使用. 因此一旦学会使用Celery, 我们可以很方便的在其他项目中使用它.
celery 是一个用于实现异步任务的库, 在很多项目中都使用它, 它和 django 融合使用很完美. 使用 celery 可以在实现 http request请求返回 view 前做一些我们想做的而且耗时的事情而不会让用户等待太久
环境
django 版本 == 1.11.6
celery 版本 == 3.1.25
安装
|
pip install django-celery pip install celery |
首先需要将 celery 添加到 django 项目的 settings 里, celery 任务和 django 需要一个 中间人(broker),,这里使用的是 django 自带的 broker, 但在生产中一般使用 rabbitmq, Redis 等,在 INSTALLED_APP 中需要添加 djcelery 和 kombu.transport.django, 还有 app 应用。
- project/project/ settings.py:
|
import djcelery djcelery.setup_loader() BROKER_URL = 'django://' INSTALLED_APP = ( ... 'app' 'djcelery' , 'kombu.transport.django' , ) |
新建 celery.py 创建一个 celery 应用,并添加以下内容
- project/project/ celery.py:
|
# 相对路径导入, 防止导入 celery 时冲突 from __future__ import absolute_import import os from celery import Celery from django.conf import settings # 让 celery 能找到 django 项目 os.environ.setdefault( 'DJANGO_SETTINGS_MODULE' , 'project.settings' ) # 创建一个 celery 应用 app = Celery( 'project' ) # 导入配置 app.config_from_object( 'django.conf:settings' ) # 自动发现 task app.autodiscover_tasks( lambda : settings.INSTALLED_APPS) @app .task(bind = True ) def debug_task( self ): print ( 'Request: {0!r}' . format ( self .request)) |
- project/project/ __init__.py:
|
from __future__ import absolute_import # This will make sure the app is always imported when # Django starts so that shared_task will use this app. from .celery import app as celery_app |
在 django app 中添加任务,文件名必须是 tasks.py, 在普通 python 函数前加一个 @task() 装饰器就变成了 celery task
-project/app/ tasks.py:
|
from celery.task import task from time import sleep @task () def helloWorld(): print 'helloWorld' sleep( 10 ) print 'helloWorld' return 'helloCelery' |
这样,一个任务就创建成功了,只剩下在 view 中调用了
-project/app view.py:
|
from tasks.py import helloWorld def home(): helloWorld.delay() return HttpResponse( 'helloCelery' ) |
最后
|
python manage.py migrate |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。
原文链接:http://www.cnblogs.com/peng104/p/10580720.html
- django 后台管理office文件(django admin后台添加导出excel功能示例代码)
- django过滤器(django 自定义过滤器的实现)
- django操作默认数据库(Django数据库类库MySQLdb使用详解)
- python 后台django(Python Django给admin添加Action的方法实例详解)
- nginxdjango部署(详解Django+uwsgi+Nginx上线最佳实战)
- django修改端口(django2.0扩展用户字段示例)
- django测试服务器静态资源放哪里(Django使用redis缓存服务器的实现代码示例)
- pythondjango后台管理(基于腾讯云服务器部署微信小程序后台服务Python+Django)
- django怎么设置数据库(django配置连接数据库及原生sql语句的使用方法)
- django常用模块(django celery redis使用具体实践)
- django框架全面讲解(Django uwsgi Nginx 的生产环境部署详解)
- pythonimage库(Python/Django后端使用PIL Image生成头像缩略图)
- django数据库详解(Django页面数据的缓存与使用的具体方法)
- django用户上传文件怎么接收(Django框架文件上传与自定义图片上传路径、上传文件名操作分析)
- django参数配置(详解重置Django migration的常见方式)
- pythondjango工作机制(Python后台开发Django会话控制的实现)
- 这里输入关键词(怎么输入关键词搜索)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
热门推荐
- vue项目有element插件(Vue Element前端应用开发之前端API接口的封装)
- ubuntu20.2安装mysql(Ubuntu 14.04下mysql安装配置教程)
- php添加数据到mysql数据库(PHP通过代码连接XAMPP数据库及MySQL数据库方法)
- laravel自定义使用方法(laravel 获取当前url的别名方法)
- python群聊提示(python-itchat 统计微信群、好友数量,及原始消息数据的实例)
- mysql 分库分表步骤(MySQL读多写少设计方案 - 分库分表还能这么做?)
- sqlserver定时计划(sql server deadlock跟踪的4种实现方法)
- 什么是jsonp格式
- python装饰器语法与应用(python装饰器简介---这一篇也许就够了推荐)
- 织梦自定义属性设置(织梦 DeDeCMS 添加自定义属性的方法图文教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9