celery任务调度框架实践
celery架构图:
Celery Beat:任务调度器,Beat进程会读取配置文件的内容,周期性地将配置中到期需要执行的任务发送给任务队列。
Celery Worker:执行任务的消费者,通常会在多台服务器运行多个消费者来提高执行效率。
Broker:消息代理,或者叫作消息中间件,接受任务生产者发送过来的任务消息,存进队列再按序分发给任务消费方(通常是消息队列或者数据库)。
Producer:调用了Celery提供的API、函数或者装饰器而产生任务并交给任务队列处理的都是任务生产者。
Result Backend:任务处理完后保存状态信息和结果,以供查询。Celery默认已支持Redis、RabbitMQ、MongoDB、Django ORM、SQLAlchemy等方式。
初始化:
1.运行celery
mac环境下的celery一下载就能直接运行。
但是centos6.9 环境下好像下载之后并不能直接运行,估计是环境变量没有配好。
需要加上celery的安装路径。
使用/usr/local/bin/celery -A your_app worker --loglevel=info
2.以守护进程运行celery:
需要一个初始化脚本:celeryd
使用方法:/etc/init.d/celeryd {start|stop|restart|status}
配置文件:/etc/default/celeryd
参考:
3.使用redis:
mac下安装redis
- brew install redis
- 如果需要后台运行 redis 服务,使用命令 brew services start redis
- 如果不需要后台服务,则使用命令 redis-server /usr/local/etc/redis.conf。
- mac os 安装 redis
安装redis后,启动时指定配置文件
redis-server ./redis.conf
检测后台进程是否存在
ps -ef |grep redis
使用分布式时,其他worker机子无法访问redis去取任务: