celery 处理大量消息的分布式系统:(1)专注于实时处理的异步任务队列;(2)支持任务调度。
application(task producer)
broker(task queue)
celery beat(task scheduler)
worker(task consumer)
result(数据库或redis)
a 生产消息至 b 并由 c 调度给 w 消费 完成后 存入r
使用场景
异步任务:耗时任务给celery一步执行。ep:发送短信/邮件、消息推送、音视频处理
定时任务:crontab。ep:每日数据统计
这节我就看了。没跟着做。
新版命令改了。改成 celery --broker='redis://xxxx:6379' flower
新版的不再是 from celery.task import Task
而是from celery import Task
另外URLpatterb的写法也不一样,9:11在讲URL
下面这个总结里的我就没用上。因为djcelery在新版celery中不支持。旧版celery又装不上。
我最后还是使用了前一个章节的
@app.task
def dj_cron_task():
这种形式去完成了本节内容。
celery 5的版本的cli写法有点不一样。要留意。
本课demo使用redis做消息队列。安装的话就要:
pip install celery[redis]
这节前半节在demo virtualenv, pyenv这些venv的使用
安装:pip install celery[redis]
消息中间件:RabbitMQ/Redis(用redis比RabbitMQ方便)
创建虚拟环境:(1)安装pip install virtualenv
创建:virtualenv env4test
激活:source env4test/bin/activate
退出虚拟环境:deactivate
(2)安装pip install virtualenvwrapper
改配置:一般在目录ls /usr/local/bin/virtualenvwrapper.sh
vi ~/.zshrc中新增
添加完成立即生效:source ~/.zshrc
创建:mkvirtualenv env4test
退出虚拟环境:deactivate
激活:workon env4test
workon 列出所有虚拟环境
pyenv通过系统改坏境变量,改变python变量
celery分布式系统,实时处理的异步任务队列,也支持任务调度。
broker_url = 'redis://localhost:6379/1' result_backend = 'redis://localhost:6379/2' timezone = 'Asia/Shanghai' imports = ( 'celery_app.task1', 'celery_app.task2', )
celery6.0版本以后将废弃大写的配置方式,使用小写的方式进行配置,并且大写和小写的方式不能混用,否则会报错。
进程管理:supervisor
1、Install:pip install supervisor
2、Start:supervisord -c /etc/supervisord.conf
3、Tool:supervisorctl
权限验证:
#python manage.py celery flower --basic_auth=imooc:imooc
监控工具:flower
监控工具:flower
Install : pip install flower
在Django中使用celery
1、install:pip install django-celery
2、Worker:python manage.py celery worker -Q queue
3、Beat:python manage.py celery beat
创建项目
#django-admin.py startproject imooc
#pip install django==1.8
在Django中使用Celery
使用Celery
1、Worker:celery -A task worker --loglevel=info
2、Beat:Celery -A task beat
3、Help:celery workker --help
使用场景:
1、异步任务:将耗时任务提交给celery去异步执行,比如发短信/邮件、消息推送、音频处理等
2、执行定时任务:类似于crontab,比如每日数据统计
Celery架构图
celery worker -A task -l INFO
celery flower --address=0.0.0.0 --port=5555 --broker=xxx --basic_auth=user:password
celery介绍
使用flower监控celery
pip install virtualenvwrapper
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
mkvirtualenv env4mooc
deactivate
workon env4mooc
workon
pip install virtualenv
virtualenv env4mooc
source env4mooc/bin/activate
deactivate
异步执行耗时任务和执行定时任务
celery的架构图