Celery简介
Celery是一个基于python开发的分布式异步消息任务队列,可以轻松的对任务进行异步处理。
实例应用场景
异步调用:邮件发送、上传头像等
定时任务:定期去统计日志、数据备份等
Celery的相关概念
task :需要执行的任务
worker :负责干活的小弟
broker :任务队列(worker拿任务的地方)
backend :干完活 存放结果的地方
Celery的安装与使用
1. 安装 (注意!如果安装不上请在pip前面加 sudo 权限)
pip install celery
pip install celery-with-redis
pip install django-celery
sudo apt install redis-server
2. 配置
2.1 settings.py 文件配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 自己的app
't8',
# 第三方给定的
'djcelery',
]
# celery配置
import djcelery
djcelery.setup_loader()
BROKER_URL='redis://127.0.0.1:6379/1' # localhost
CELERY_CONCURRENCY=2 #(设置worker的并发数量)
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/2' # localhost
2.2 在工程目录下新建celery.py 文件
from __future__ import absolute_import
from celery import Celery
from django.conf import settings
import os
# 设置系统的环境配置用的是Django的
os.environ.setdefault('DJANGO_SETTING_MODEULE','工程名字.settings')
# 实例化celery
app = Celery('mycelery')
# APP设置时区
app.conf.timezone = "Asia/Shanghai"
# 指定celery的配置来源 用的是项目的配置文件settings.py
app.config_from_object("django.conf:settings")
# 让celery自动去发现我们的任务(task)
app.autodiscover_tasks(lambda : settings.INSTALLED_APPS)
# 你需要在app目录下新建一个叫tasks.py(不能写错) 文件
2.3 在工程目录下的 init.py 文件中加入
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app