Celery学习笔记(一)

Celery学习笔记(一)

什么是Celery

Celery是一个python模块,它在官网的定义:
Celery is asynchronous task queue/job based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.
这里强调的概念包括:异步任务队列 / 分布式消息传递 / 实时或调度任务,下面对这些概念分别做解释

为什么要使用Celery

Celery是一个使用Python开发的分布式任务调度模块,因此对于大量使用Python构建的系统,可以说是无缝衔接,使用起来很方便。Celery专注于实时处理任务,同时也支持任务的定时调度。因此适合实时异步任务定时任务等调度场景。

Celery任务队列

任务队列是一种在进程或机器之间分发任务的机制。
任务队列的输入是被称为任务(task)的工作单元。专用的工作进程会时刻监控任务队列,来获取要执行的任务。
celery的client和worker通过消息来“沟通“。Celery需要依靠RabbitMQ等作为消息代理,同时也支持Redis甚至是Mysql,Mongo等,当然,官方默认推荐的是RabbitMQ。
为了开始一个任务,client需要向队列中发送任务消息,然后broker会把任务投递给worker处理。一个celery系统可以包含多个worker和broker,以便实现高可用和可水平扩展。

celery的架构

如何安装Celery

选择broker

RabbitMQ 功能完备、稳定、耐用,并且安装简便,是生产环境的绝佳选择。
sudo apt-get install rabbitmq-server
命令执行完成后,中间人就已经运行在后台,准备好传输消息
为了方便之后分布式部署的时候通过RabbitMQ进行沟通,我们需要创建一个 RabbitMQ 用户、一个虚拟主机,并且允许这个用户访问这个虚拟主机:

$ sudo rabbitmqctl add_user myuser mypassword
$ sudo rabbitmqctl add_vhost myvhost
$ sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

RabbitMQ的Python客户端选择librabbitmq这个C库。

分布式的时候:一定要显式指定rabbitMQ的用户名,密码,server的IP,虚拟主机。
eg:
broker=’amqp://danny:123456@192.168.1.128:5672/myvhost’

否则在worker开始工作的时候会出现如下错误:ACCESS_REFUSED Login was refused

安装celery

Celery 提交到了 Python Package Index(PyPI)上,所以你可以用标准的 Python 工具,诸如 pip 或 easy_install 来安装:
$ pip install celery

更详细的Celery架构图

更详细的Celery架构图

Celery入门使用方式

Celery学习笔记
Celery初步
celery集群管理实现

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值