Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子:
Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis,后面会讲
Celery有以下优点:
pip install django-celery
#注:安装django-celery会自动安装依赖版本的celery
pip install django-celery
import djcelery
djcelery.setup_loader()
BROKER_URL = ‘amqp://172.17.0.8:5672‘
RESULT_BACKEND = ‘amqp://172.17.0.8:5672‘
INSTALLED_APPS = (
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘djcelery‘, #app这里要增加djcelery
)
CELERYBEAT_SCHEDULER = ‘djcelery.schedulers.DatabaseScheduler‘
注:这里Celery broker我用的RabbitMQ ,也可以用redis
python manage.py migrate
python manage.py migrate
from celery import task
@task
def add(x, y):
return x + y
from django.shortcuts import render,HttpResponse
from web import tasks
def show(request):
res = tasks.add.delay(3,3)
print("start running task")
print("async task res",res.get() )
return HttpResponse(‘结果: %s‘%res.get())
python manage.py celery worker --loglevel=info

1、django admin中配置crontab

2、添加一个每分钟执行一次的crontab

3、添加周期任务,并把task和crontab关联

4、启动worker 和 beat测试计划任务
python manage.py celery worker --loglevel=info

python manage.py celery beat --loglevel=info

已看到任务在后台每分钟执行一次该任务。
Celery异步任务队列/周期任务+ RabbitMQ + Django
原文:http://www.cnblogs.com/yangmv/p/6623343.html