安装后 celery -h 解决一切问题 🤣
发现开启 命令 和 重启 worker 可以一样。。。celery multi restart ……..
安装 celery:pip install "celery[redis]"
安装 redis:
打开官网下载: https://redis.io/download
根据页面提示 安装
常用命令
默认情况下,程序将在当期目录创建pid
和log
文件,为了防止多个worker
运行出错,推荐将这些文件放在专门的目录
mkdir -p /var/run/celery
mkdir -p /var/log/celery
开启 worker
celery worker -A mjtt_django -l info \
-c 1 \
-n push_worker \
-Q push_que \
--pidfile=/var/run/celery/push_worker.pid \
--logfile=/var/log/celery/push_worker%I.log
其他参数:-A
: 指定项目 需要在项目manage.py 同级目录执行此命令-c
: 指定 worker 数量,默认并发数是机器上CPU的数量-l
: 日志等级-n
: worker 名-Q
: 队列名,用于任务指定执行队列,不与其他队列冲突
如果程序中不指定队列默认是发给名为 celery 的队列执行,所以要加个 celery 队列
celery worker -A mjtt_django -l info \
-c 1 \
-n default_worker \
-Q celery \
--pidfile=/var/run/celery/default_worker.pid \
--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
celery beat -A mjtt_django -l info --pidfile=/var/run/celery/celerybeat.pid
不写 -l
默认不输出。。
重启 worker
celery multi restart default_worker \
-A mjtt_django -l info \
-c 1 \
-n default_worker \
-Q celery \
--pidfile=/var/run/celery/default_worker.pid \
--logfile=/var/log/celery/default_worker%I.log
celery multi restart push_worker \
-A mjtt_django -l info \
-c 1 \
-n push_worker \
-Q push_que \
--pidfile=/var/run/celery/push_worker.pid \
--logfile=/var/log/celery/push_worker%I.log
每次更新对应代码都要重启 worker, 定时任务也要重启 beat
注意: celery multi 不会存储 worker 设置重启所有命令参数都要加上
关闭 worker
celery multi stop push_worker -A mjtt_django \
--pidfile=/Users/qj/Documents/prj_file/run/push_worker.pid
以下非常时期用。。
杀掉所有 worker :
ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9
清除所有 redis 任务:
redis-cli -h 127.0.0.1 -p 6379 -n 0 ltrim key 0 0
查看 celery worker 状态:
celery status -A mjtt_django
查正在运行的 task
celery inspect active -A mjtt_django
清空队列:
celery purge -A mjtt_django
查看worker:
pstree -ap|grep "celery worker"
查看 beat
pstree -ap|grep "celery beat"
定时任务
pip install django-celery-beat
如果是 python2
pip install django-celery-beat==1.3.0