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' # 結果序列化方案
新聞熱點
疑難解答