Celery

概要

  • 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

  1. copy default configure file
  2. 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

你可能感兴趣的:(Celery)