Celery异步任务搭建
Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。
Celery的架构由三部分组成,消息中间件(message broker),**任务执行单元(worker)和任务执行结果存储(task result store)**组成。
消息中间件
Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等
任务执行单元
Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。
任务结果存储
Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等
另外, Celery还支持不同的并发和序列化的手段
- 并发:Prefork, Eventlet, gevent, threads/single threaded
- 序列化:pickle, json, yaml, msgpack. zlib, bzip2 compression, Cryptographic message signing 等等
搭建步骤
Windows下使用celery模块,不太好用的样子
方法一(使用djcelery)
1、安装djcelery模块
pip install redis==2.10.6 # 否则出现版本不契合的问题
pip install django-celery
2、setting中配置celery相关信息
import djcelery # 导包
djcelery.setup_loader() # 初始化celery异步任务
BROKER_URL = 'redis://127.0.0.1:6379/1' # 消息中间件,任务存放的redis容器地址
CELERY_IMPORTS = ('OneApp.tasks') # 指定celery任务文件
CELERY_TIMEZONE = 'Asia/Shanghai' # Celery定时任务使用的时区
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' # Celery调度程序
3、项目主目录中创建celery.py文件
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
# 把 Celery 和 Django进行结合,识别和加载 Django 的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DJCelery.settings')
# 创建Celery实例对象
appCelery = Celery('appCelery')
# 通过appCelery对象加载配置
appCelery.config_from_object('django.conf:settings')
# 如果在app有创建tasks.py文件,会自动检索
appCelery