安装后 celery -h 解决一切问题 🤣

发现开启 命令 和 重启 worker 可以一样。。。celery multi restart ……..

安装 celery:
pip install "celery[redis]"
安装 redis:
打开官网下载: https://redis.io/download
根据页面提示 安装
Celery - 图1

常用命令

默认情况下,程序将在当期目录创建pidlog文件,为了防止多个worker运行出错,推荐将这些文件放在专门的目录

  1. mkdir -p /var/run/celery
  2. mkdir -p /var/log/celery

开启 worker

  1. celery worker -A mjtt_django -l info \
  2. -c 1 \
  3. -n push_worker \
  4. -Q push_que \
  5. --pidfile=/var/run/celery/push_worker.pid \
  6. --logfile=/var/log/celery/push_worker%I.log

其他参数:
-A : 指定项目 需要在项目manage.py 同级目录执行此命令
-c : 指定 worker 数量,默认并发数是机器上CPU的数量
-l : 日志等级
-n : worker 名
-Q : 队列名,用于任务指定执行队列,不与其他队列冲突

如果程序中不指定队列默认是发给名为 celery 的队列执行,所以要加个 celery 队列

  1. celery worker -A mjtt_django -l info \
  2. -c 1 \
  3. -n default_worker \
  4. -Q celery \
  5. --pidfile=/var/run/celery/default_worker.pid \
  6. --logfile=/var/log/celery/default_worker%I.log

—pidfile=/Users/qj/Documents/prj_file/run/push_worker.pid \
—logfile=/Users/qj/Documents/prj_file/log/push_worker%I.log

开启 beat

  1. celery beat -A mjtt_django -l info --pidfile=/var/run/celery/celerybeat.pid

不写 -l 默认不输出。。

重启 worker

  1. celery multi restart default_worker \
  2. -A mjtt_django -l info \
  3. -c 1 \
  4. -n default_worker \
  5. -Q celery \
  6. --pidfile=/var/run/celery/default_worker.pid \
  7. --logfile=/var/log/celery/default_worker%I.log
  1. celery multi restart push_worker \
  2. -A mjtt_django -l info \
  3. -c 1 \
  4. -n push_worker \
  5. -Q push_que \
  6. --pidfile=/var/run/celery/push_worker.pid \
  7. --logfile=/var/log/celery/push_worker%I.log

每次更新对应代码都要重启 worker, 定时任务也要重启 beat

注意: celery multi 不会存储 worker 设置重启所有命令参数都要加上

关闭 worker

  1. celery multi stop push_worker -A mjtt_django \
  2. --pidfile=/Users/qj/Documents/prj_file/run/push_worker.pid

以下非常时期用。。

杀掉所有 worker :

  1. ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9

清除所有 redis 任务:

  1. redis-cli -h 127.0.0.1 -p 6379 -n 0 ltrim key 0 0

查看 celery worker 状态:

  1. celery status -A mjtt_django

查正在运行的 task

  1. celery inspect active -A mjtt_django

清空队列:

  1. celery purge -A mjtt_django

查看worker:

  1. pstree -ap|grep "celery worker"

查看 beat

  1. pstree -ap|grep "celery beat"

定时任务

  1. pip install django-celery-beat

如果是 python2
pip install django-celery-beat==1.3.0