celery的使用(一)
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 文件配置
1 INSTALLED_APPS = [ 2 'django.contrib.admin', 3 'django.contrib.auth', 4 'django.contrib.contenttypes', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles', 8 # 自己的app 9 't8', 10 # 第三方给定的 11 'djcelery', 12 ]
1 # celery配置 2 import djcelery 3 djcelery.setup_loader() 4 BROKER_URL='redis://127.0.0.1:6379/1' # localhost 5 CELERY_CONCURRENCY=2 #(设置worker的并发数量) 6 CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/2' # localhost
2.2 在工程目录下新建celery.py 文件
1 from __future__ import absolute_import 2 from celery import Celery 3 from django.conf import settings 4 import os 5 6 # 设置系统的环境配置用的是Django的 7 os.environ.setdefault('DJANGO_SETTING_MODEULE','工程名字.settings') 8 9 # 实例化celery 10 app = Celery('mycelery') 11 12 # APP设置时区 13 app.conf.timezone = "Asia/Shanghai" 14 15 # 指定celery的配置来源 用的是项目的配置文件settings.py 16 app.config_from_object("django.conf:settings") 17 18 # 让celery自动去发现我们的任务(task) 19 app.autodiscover_tasks(lambda : settings.INSTALLED_APPS) 20 # 你需要在app目录下新建一个叫tasks.py(不能写错) 文件
2.3 在工程目录下的 init.py 文件中加入
1 from __future__ import absolute_import, unicode_literals 2 from .celery import app as celery_app