前面兩節(jié)介紹了Celery的安裝與簡單應用,現(xiàn)在來詳細介紹在django中的Celery應用,并附帶郵件發(fā)送的異步任務的例子.
1.新建Django工程與應用
新建工程與應用這里不做詳細介紹,自強學堂的Django基礎教程寫得很不錯,可一看。這里我們建一個名為demo的項目和home應用。
1.編輯settings.py文件
在文件的最后添加如下代碼:
###配置Broker
BROKER_URL = 'redis://127.0.0.1:6379/0'
BROKER_TRANSPORT = 'redis'
2.新建celery.py文件
from __future__ import absolute_import
import os
import django
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo.settings')
django.setup()
app = Celery('demo')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
3.新建tasks.py文件
在home應用文件夾下:
from demo.celery import app
@app.task
def hello_world():
print('Hello World')
4.編輯viewss.py文件
#coding:utf-8
from django.shortcuts import render
from django.http import HttpResponse
from .tasks import hello_world
def index(request):
hello_world.delay()
return HttpResponse(u"Fuck the GFW!")
5.其他
當然別忘了在app_installed注冊home應用,并且配置url.py的路由。
6.啟動Celery和Django
進入demo工程下,啟動Celery。
zjq:~/dev/demo$ celery -A demo worker -l debug
啟動Django:
zjq:~/dev/demo$ python manage.py runserver
7.大功告成
打開瀏覽器,進入index方法,可看到Celery日志打印了”Hello World“。
8.郵件發(fā)送的異步任務的例子
===>前往我的github