Python3.6、Django2.0使用Celery、Rabbitmq

以下内容是个人的随手记录,就是介绍了下简单的使用;

欢迎大家吐槽,接下来就是激情的时刻,准备好啤酒饮料矿泉水,开整!!!

 

Django使用Celery中间存储使用Rabbitmq

项目使用环境:

Python==3.6.2
Django==2.0.6
Celery==4.2.1
django-celery==3.2.2
django-celery-result==1.0.4

第一步:创建django项目demo以及项目下的应用home

django-admin.py startproject demo
python manage.py startapp home

第二步:在项目的主配置下demo/demo/settings.py文件中加入

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

第三步:在项目的主配置目录下创建文件demo/demo/celery.py

# -*- coding:utf-8 -*-

from __future__ import absolute_import  # 注意此项必须放在最上方, 为了向上版本兼容

import os

from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo.settings')
django.setup()

app = Celery('demo')

# 自动加载每个应用(app)目录下的tasks.py文件
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

第四步:在项目的应用中创建异步任务队列home/tasks.py

# -*- coding:utf-8 -*-

from demo.celery import app

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

第五步:在项目的应用的视图函数中调用异步任务队列home/views.py

# -*- coding:utf-8 -*-

from django.shortcuts import render,render_to_response
from django.http import HttpResponse

from .tasks import print_hello
 
def index(request):
    print_hello.delay()
    return HttpResponse(u"欢迎光临 红浪漫!")

第六步:在项目的应用的路由设置文件中添加路由home/urls.py

# -*- coding:utf-8 -*-

from django.conf.urls import include, url
from home import views
urlpatterns = [
    url(r'^$', views.index),
]

第七步:在项目的主配置文件的初始化文件中增加以下内容home/home/__init__.py
​​​​​​

# -*- coding:utf-8 -*-

from home.settings.celery import app as celery_app
__all__ = ["celery_app"]

第八步:在项目的主目录demo/manage.py文件目录运行celery队列

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

第九步:在项目的主目录demo/manage.py文件目录启动django项目

python3 manage.py runserver 0.0.0.0:8008

第十步:返回消息队列的信息home/views.py

# -*- coding:utf-8 -*-

from django.shortcuts import render,render_to_response
from django.http import HttpResponse

from .tasks import print_hello
 
def index(request):
    result = print_hello.delay()  
    id = result.task_id  # 获取消息队列任务id
    print print_hello.AsyncResult(id).get()  # 获取对应id的返回值
    return HttpResponse(u"欢迎光临 红浪漫!")

第十一步:返回任务存入django使用的数据库,项目主配置目录下settings.py文件增加配置

INSTALLED_APPS = [
    'django_celery_results'
]

CELERY_RESULT_BACKEND = 'django-db'

第十二步:同步存储队列任务结果的表

python3 manage.py migrate django_celery_result

第十三步:Celery提供了一个工具flower,将各个任务的执行情况、各个worker的健康状态进行监控并以可视化的方式展现

pip3 install flower

第十四步:启动flower

python3 manage.py celery flower

第十五步:网页查看,默认端口是5555

http://localhost:5555

 

注意:以上内容是个人使用的随手记录, 就是介绍了下简单的使用

欢迎大家来吐槽,准备好瓜子饮料矿泉水,开整!!!

---------------------------------------------------------------------------------------

搞笑一则:能动手尽量别吵吵

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值