开发环境:window10,python2.7,django1.11.13,
安装:pip install celery-with-redis,pip install celery,pip install django-celery,pip install redis
redis安装链接:https://github.com/MSOpenTech/redis。找到Redis-x64-3.2.100.msi
目录结构:
- djangoDemo
- djangoDemo
setting.py
wsgi.py
urls.py
- app
models.py
views.py
...
配置setting.py
INSTALLED_APPS = (
...
'app',
'djcelery',
)
BROKER_URL = 'redis://127.0.0.1:6379/0'
BROKER_TRANSPORT = 'redis'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
创建PY文件在djangoDemo / djangoDemo / celery.py目录下:
# encoding: utf-8
from __future__ import absolute_import,unicode_literals
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoDemo.settings')
app = Celery('djangoDemo')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
创建djangoDemo /应用程序/ tasks.py
from __future__ import absolute_import
from djangoDemo.celery import app
@app.task
def add(x, y):
return x+y
view.py中使用
from django.shortcuts import render, HttpResponse
from app.tasks import add
from djangoDemo.celery import app
def tests(request):
result = add.delay(2,4)
#获取id
ids = result.id
#获取执行状态
sget = result.state
#返回执行状态
state = app.AsyncResult(ids).state
#返回执行结果
results = app.AsyncResult(ids).result
return HttpResponse(results)
url.py配置
url(r'^tests/', views.tests),
启动django
python manage.py runserver
启动celery
python manage.py celery worker -c 4 --loglevel=info
测试: