概要
- celery是python写成的,解决分布式队列任务,需要message broker配合,通常是rabbitMQ或者redis
- celery可以跨机器,跨数据中心运行
Install
redis, src install
celery, pip
设置
- 单个task的timeout,两种方式,可以直接失败,也可以exception,可以通过宏定义,还可以热更新,要注意task-redis之间的timeout,默认1小时。
- celery的设置既可以在django的setting中,也可以在celery模块中
- 并发,目前项目中的队列并发是8,意味着超过8个就得等待。。显然不够
experimentation has shown that adding more than twice the number of CPU’s is rarely effective, and likely to degrade performance instead.
- res = add.delay(2,2), res.id就是task id,这个很有必要记录到日志中,方便排查。
- 注意celery队列的默认最大任务时间,否则会抛出异常
raise TimeLimitExceeded(job._timeout)
TimeLimitExceeded: TimeLimitExceeded(300.0,)
管理命令
- 查看worker状态,不会改变worker状态
celery -A proj inspect active
celery -A proj status
- 控制worker
后台
https://github.com/celery/celery/tree/3.1/extra/generic-init.d/
http://docs.jinkan.org/docs/celery/tutorials/daemonizing.html#init-script-celeryd
- copy default configure file
- copy bin
3.create celery user
4.make sure celery auth
5.chown for /var/log/celery /var/run/celery
6.make sure all logs have 755
网友评论