本文主要是介绍celery分布式任务队列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
celery分布式任务队列
Celery是基于分布式消息传递的异步任务队列/作业队列。它专注于实时操作,但也支持调度。
执行单元(称为任务)使用多处理,Eventlet或gevent在一个或多个工作服务器上并发执行。任务可以异步(在后台)或同步执行(等到准备就绪)。
Celery用于生产系统,每天处理数百万个任务。
异步实时处理
支持扩展
支持多种消息队列
使用AMQP协议
应用场景:
- 后台任务
- 一步操作
- 定期执行的工作
- 一定程度上的分布式计算
核心关键词:
-
Task queue:任务队列,描述在多线程或主机间任务工作的一种机制
-
Task:任务,队列输入,工作单元
-
Broker:消息代理,转发任务
-
Worker:工作者,负责执行任务
首先安装RabbitMQ-server请在我的博客里查找安装的方法
安装redisyum install redis systemctl start redis ps -aux|grep redis #如果运行中出错 请修改celery如下所示 pip install --upgrade https://github.com/celery/celery/tarball/master
pip install celery
- 发送任务
- 定时执行任务
- 多台机器并发工作
task—>MQ—>worker—>db
Linux操作
1.创建task
vim task.py
2.启动celery服务
celery worker -A task -l info
3.执行worker任务
打开ipython
from task import worker
w = worker.delay('log')
w.ready()
w.get()
[2019-03-05 17:19:21,274: WARNING/ForkPoolWorker-1] log工作正在进行
[2019-03-05 17:19:23,277: INFO/ForkPoolWorker-1] Task task.worker[fce96b65-68c9-4489-bfc2-f2a2d1bbc2aa] succeeded in 2.0033699511550367s: 'logOK'
下面说明执行定时任务
vim run.py
vim config.py
vim task_log.py
启动
#celery worker -A task_log -l info
celery beat -A task_log -l info
分布式
run.py的内容
大家可以看出任务是交替运行的
这篇关于celery分布式任务队列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!