Celery异步任务框架
Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统
专注于实时处理的异步任务队列
同时也支持任务调度
#
官方Celery 官网:http://www.celeryproject.org/
Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html
Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/
注意:
#
Celery异步任务框架#
Celery架构Celery的架构由三部分组成,消息中间件(message broker)、任务执行单元(worker)和 任务执行结果存储(task result store)组成。
#
消息中间件Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等
#
任务执行单元Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。
#
任务结果存储Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等
#
使用场景异步执行:解决耗时任务,将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等
延迟执行:解决延迟任务
定时执行:解决周期(周期)任务,比如每天数据统计
#
Celery的安装配置消息中间件:RabbitMQ/Redis
app=Celery(‘任务名’, broker=’xxx’, backend=’xxx’)
#
Celery执行异步任务#
包架构封装#
异步执行#
celery.py#
config.py#
sms/tasks.py#
执行windows
celery不支持在windows下运行任务,需要借助eventlet来完成
-c
是协程的数量,生产环境可以用1000
非windows
#
提交异步任务#
定时执行#
举例目录#
celery.py#
config.py#
test_time/tasks.py任务添加好了,需要让celery单独启动一个进程来定时发起这些任务, 注意, 这里是发起任务,不是执行,这个进程只会不断的去检查你的任务计划,每发现有任务需要执行了,就发起一个任务调用消息,交给celery worker去执行
执行同上
windows
非windows