Django教程
Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。
Django是一个开放源代码的Web应用框架,由Python写成。
Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。
一、前言
Celery是一个基于python开发的分布式任务队列,如果不了解请阅读笔者上一篇博文Celery入门与进阶,而做python WEB开发最为流行的框架莫属Django,但是Django的请求处理过程都是同步的无法实现异步任务,若要实现异步任务处理需要通过其他方式(前端的一般解决方案是ajax操作),而后台Celery就是不错的选择。倘若一个用户在执行某些操作需要等待很久才返回,这大大降低了网站的吞吐量。下面将描述Django的请求处理大致流程(图片来源于网络):
请求过程简单说明:浏览器发起请求-->请求处理-->请求经过中间件-->路由映射-->视图处理业务逻辑-->响应请求(template或response)
二、配置使用
celery很容易集成到Django框架中,当然如果想要实现定时任务的话还需要安装django-celery-beta插件,后面会说明。需要注意的是Celery4.0只支持Django版本>=1.8的,如果是小于1.8版本需要使用Celery3.1。
配置
新建立项目taskproj,目录结构(每个app下多了个tasks文件,用于定义任务):
taskproj├── app01│ ├── __init__.py│ ├── apps.py│ ├── migrations│ │ └── __init__.py│ ├── models.py│ ├── tasks.py│ └── views.py├── manage.py├── taskproj│ ├── __init__.py│ ├── settings.py│ ├── urls.py│ └── wsgi.py└── templates
在项目目录taskproj/taskproj/目录下新建celery.py:
#!/usr/bin/env python3# -*- coding:utf-8 -*-# Author:wdfrom __future__ import absolute_import, unicode_literalsimport osfrom celery import Celeryos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'taskproj.settings') # 设置django环境app = Celery('taskproj')app.config_from_object('django.conf:settings', namespace='CELERY') # 使用CELERY_ 作为前缀,在settings中写配置app.autodiscover_tasks() # 发现任务文件每个app下的task.pytaskproj/taskproj/__init__.py:from __future__ import absolute_import, unicode_literalsfrom .celery import app as celery_app__all__ = ['celery_app']taskproj/taskproj/settings.pyCELERY_BROKER_URL = 'redis://10.1.210.69:6379/0' # Broker配置,使用Redis作为消息中间件CELERY_RESULT_BACKEND = 'redis://10.1.210.69:6379/0' # BACKEND配置,这里使用redisCELERY_RESULT_SERIALIZER = 'json' # 结果序列化方案
新闻热点
疑难解答