Django+django-celery-results+celery+redis+flower

一、创建env环境

#virtual及redis服务端需要提前安装好
virtualenv /home/DjangoCelery2
source /home/DjangoCelery2/bin/activate
cd /home/DjangoCelery2/
复制代码

二、安装软件

pip install celery django-celery-results Django redis
复制代码

三、创建Django

#/home/DjangoCelery2/
django-admin startproject myplatform
cd myplatform
python3 manage.py startapp apps
tree /home/DjangoCelery2/myplatform/
复制代码
#目录结构
/home/DjangoCelery2/myplatform/
├── apps
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── myplatform
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-36.pyc
    │   └── settings.cpython-36.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py
复制代码

配置django

  1. 配置apps/views.py文件
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
    return HttpResponse('hello django')
复制代码
  1. 创建apps/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index,name='index'),
]
复制代码
  1. 配置myplatform/urls.py文件
from django.contrib import admin
#导入include
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('apps',include('apps.urls'))
]
复制代码
  1. 配置myplatform/setting.py文件
#默认为空,加入允许对外访问的IP
ALLOWED_HOSTS = ['192.168.1.204']
复制代码

运行django

python3 manage.py runserver 192.168.1.204:8000
复制代码

访问测试

http://192.168.1.204:8000/apps
#页面显示hello django即可
复制代码

四、配置异步处理

  1. 创建myplatform/celery.py文件
from __future__ import absolute_import, unicode_literals   #这句导入一定要在第一的位置
import os
from celery import Celery
from django.conf import settings

#这里我们的项目名称为,所以为platform.settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myplatform.settings")

# 创建celery应用
app = Celery('dailyblog')
#doesn’t have to serialize the object.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
复制代码
  1. 配置myplatform/setting.py文件
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_celery_results',#添加此项
]
....
#CELERY
BROKER_BACKEND = 'redis'
BROKER_URL = 'redis://localhost'
CELERY_RESULT_BACKEND = 'redis://localhost' #使用database作为结果存储
复制代码
  1. 配置__init__.py文件(myplatform项目目录)
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
复制代码
  1. 创建apps/tasks.py文件
from myplatform import celery_app as app
import time
@app.task
def func():
    time.sleep(6)
    return 2+3
复制代码
  1. 配置apps/views.py文件
from django.shortcuts import render
#导入func函数
from .tasks import func
from django.http import HttpResponse
# Create your views here.


def index(request):
    print('start index')
    #调用func
    func.delay()
    print('end index')
    return HttpResponse('hello django')
复制代码
  1. 重新启动Django
python3 manage.py runserver 192.168.1.204:8000
复制代码
  1. 启动celery
cd /home/DjangoCelery2/myplatform
celery -A myplatform worker -l INFO
复制代码

8. 测试

http://192.168.1.204:8000/apps
复制代码

9. 目录结构

#pyc文件可忽略
myplatform/
├── apps
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── tasks.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── views.cpython-36.pyc
│   ├── tasks.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── myplatform
    ├── celery.py
    ├── __init__.py
    ├── __pycache__
    │   ├── celery.cpython-36.pyc
    │   ├── __init__.cpython-36.pyc
    │   ├── settings.cpython-36.pyc
    │   ├── urls.cpython-36.pyc
    │   └── wsgi.cpython-36.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py

复制代码
  1. github地址

下载地址

五、配置flower监控

  1. 安装flower
pip install flower
复制代码
  1. 启动flower
#指定对外访问IP及redis为broker
#celery flower --address=192.168.1.204 --broker='redis://localhost'
#basic_auth开启认证
celery flower --address=192.168.1.204 --broker='redis://localhost' --basic_auth=admin:123456
复制代码
  1. 浏览监控页面
http://192.168.1.204:5555/
复制代码

转载于:https://juejin.im/post/5c385042e51d45515f2453cb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值