如何停止芹菜工人进程
How to stop celery worker process
我在 Ubuntu EC2 节点上有一个 Django 项目,我一直使用它来使用 Celery
设置异步。
我正在关注 this 以及文档。
我已经能够在命令行上完成一项基本任务,使用:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ celery --app=myproject.celery:app worker --loglevel=INFO
启动一个worker。从那以后,我对 Python 进行了一些更改,但意识到我需要重新启动一个 worker。
从命令行,我试过:
ps auxww | grep 'celery worker' | awk '{print }' | xargs kill -9
但我可以看到工人仍然是运行。
怎么杀掉它?
编辑:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ sudo ps auxww | grep celeryd | grep -v "grep" | awk '{print }' | sudo xargs kill -HUP
kill: invalid argument H
Usage:
kill [options] <pid> [...]
Options:
<pid> [...] send signal to every <pid> listed
-<signal>, -s, --signal <signal>
specify the <signal> to be sent
-l, --list=[<signal>] list all signal names, or convert one to a name
-L, --table list all signal names in a nice table
-h, --help display this help and exit
-V, --version output version information and exit
For more details see kill(1).
编辑 2:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ ps aux|grep celery
ubuntu 9756 0.0 3.4 100868 35508 pts/6 S+ 15:49 0:07 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu 9760 0.0 3.9 255840 39852 pts/6 S+ 15:49 0:05 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu 12760 0.0 0.0 10464 932 pts/7 S+ 19:04 0:00 grep --color=auto celery
在终端中试试这个
ps aux|grep 'celery worker'
你会看到这样的
username 29042 0.0 0.6 23216 14356 pts/1 S+ 00:18 0:01 /bin/celery worker ...
然后通过
杀死进程id
sudo kill -9 process_id # here 29042
如果你有多个进程,那么你必须使用上面的 kill
命令
杀死所有进程 ID
sudo kill -9 id1 id2 id3 ...
来自 celery 文档
ps auxww | grep 'celery worker' | awk '{print }' | xargs kill -9
或者如果您是 运行 celeryd
ps auxww | grep celeryd | awk '{print }' | xargs kill -9
备注
如果你在supervisor
中是运行 celery
,即使终止进程,它也会自动重启(如果在supervisor脚本中是autorestart=True
)。
pkill -f "celery worker"
通过字符串模式轻松终止进程
celery -A proj control shutdown
已编辑,增加了一点点。
您应该从项目的根目录使用此命令,"proj" 是项目的名称,例如,如果您的 Django 项目名为 DjangoApp,则命令应如下所示
celery -a DjangApp control shutdown
这 should/will 从项目中停止你的 celery worker
ps auxww | grep 'celery worker' | grep -v " grep " | awk '{print }' | xargs kill -9
这个与之前介绍的非常相似但有所改进,因为避免了在尝试终止 grep 进程时显示的错误..
如果有人想以编程方式关闭他们的 celery 应用程序,可以在 python 中使用以下方法完成同样的事情:
celery_app.control.shutdown()
我在 Ubuntu EC2 节点上有一个 Django 项目,我一直使用它来使用 Celery
设置异步。
我正在关注 this 以及文档。
我已经能够在命令行上完成一项基本任务,使用:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ celery --app=myproject.celery:app worker --loglevel=INFO
启动一个worker。从那以后,我对 Python 进行了一些更改,但意识到我需要重新启动一个 worker。
从命令行,我试过:
ps auxww | grep 'celery worker' | awk '{print }' | xargs kill -9
但我可以看到工人仍然是运行。
怎么杀掉它?
编辑:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ sudo ps auxww | grep celeryd | grep -v "grep" | awk '{print }' | sudo xargs kill -HUP
kill: invalid argument H
Usage:
kill [options] <pid> [...]
Options:
<pid> [...] send signal to every <pid> listed
-<signal>, -s, --signal <signal>
specify the <signal> to be sent
-l, --list=[<signal>] list all signal names, or convert one to a name
-L, --table list all signal names in a nice table
-h, --help display this help and exit
-V, --version output version information and exit
For more details see kill(1).
编辑 2:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ ps aux|grep celery
ubuntu 9756 0.0 3.4 100868 35508 pts/6 S+ 15:49 0:07 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu 9760 0.0 3.9 255840 39852 pts/6 S+ 15:49 0:05 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu 12760 0.0 0.0 10464 932 pts/7 S+ 19:04 0:00 grep --color=auto celery
在终端中试试这个
ps aux|grep 'celery worker'
你会看到这样的
username 29042 0.0 0.6 23216 14356 pts/1 S+ 00:18 0:01 /bin/celery worker ...
然后通过
杀死进程idsudo kill -9 process_id # here 29042
如果你有多个进程,那么你必须使用上面的 kill
命令
sudo kill -9 id1 id2 id3 ...
来自 celery 文档
ps auxww | grep 'celery worker' | awk '{print }' | xargs kill -9
或者如果您是 运行 celeryd
ps auxww | grep celeryd | awk '{print }' | xargs kill -9
备注
如果你在supervisor
中是运行 celery
,即使终止进程,它也会自动重启(如果在supervisor脚本中是autorestart=True
)。
pkill -f "celery worker"
通过字符串模式轻松终止进程
celery -A proj control shutdown
已编辑,增加了一点点。
您应该从项目的根目录使用此命令,"proj" 是项目的名称,例如,如果您的 Django 项目名为 DjangoApp,则命令应如下所示
celery -a DjangApp control shutdown
这 should/will 从项目中停止你的 celery worker
ps auxww | grep 'celery worker' | grep -v " grep " | awk '{print }' | xargs kill -9
这个与之前介绍的非常相似但有所改进,因为避免了在尝试终止 grep 进程时显示的错误..
如果有人想以编程方式关闭他们的 celery 应用程序,可以在 python 中使用以下方法完成同样的事情:
celery_app.control.shutdown()