celery + rabbitmq + django

首先要启动  rabbitmq   启动命令  sudo rabbitmq-server


1.  创建django项目   demo,和项目下的应用home

命令:   

    django-admin.py startproject demo

    python manage.py startapp home


2. 项目创建成功后,在路径  demo/demo/settings.py  尾部添加

BROKER_URL = 'amqp://guest:guest@localhost:5672//' #连接rabbitmq

3. 在demo/demo路径下创建 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)

4. 在路径demo/home下  创建tasks.py    异步工作目录

from demo.celery import app

@app.task
def hello_world():
    print('Hello World,fvf')

5. 在 demo/home/views.py 创建视图函数

#coding:utf-8
from django.shortcuts import render,render_to_response
from django.http import HttpResponse

from .tasks import hello_world,sendEmail
 
def index(request):
    hello_world.delay()
    #sendEmail.delay()
    return HttpResponse(u"欢迎光临 自强学堂!")

6. 注册路由

from django.conf.urls import include, url
from django.contrib import admin
from home import views as home_views
urlpatterns = [
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^$',home_views.index),
    # url(r'^success/$',home_views.success),
]

7. 进入demo/  路径下启动celery

      celery -A demo worker --loglevel=info        其中demo为celery.py所在目录

     

      启动  django     命令   Python manage.py runserver


result = hello_world.delay()
print '----------------------------'
id = result.task_id # 获取id

print hello_world.AsyncResult(id).get()# 获取对应ID的返回值

最后效果

celery + rabbitmq + django_第1张图片



最后 如果还是失败。  请前往  http://www.jianshu.com/p/f1f2cd1cd491   页面底部下载代码实例。  这个网址也是本文参考网址



你可能感兴趣的:(django)