安装后 celery -h 解决一切问题 🤣
发现开启 命令 和 重启 worker 可以一样。。。celery multi restart ……..
安装 celery:pip install "celery[redis]"
安装 redis:
打开官网下载: https://redis.io/download
根据页面提示 安装
常用命令
默认情况下,程序将在当期目录创建pid和log文件,为了防止多个worker运行出错,推荐将这些文件放在专门的目录
mkdir -p /var/run/celerymkdir -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
