无法杀死linux进程

时间:2015-04-03 12:30:18

标签: linux ubuntu celery

我尝试按照How to restart Celery gracefully without delaying tasks更改代码后重启celery。基于此,我跑了:

(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ ps aux|grep "celery"
ubuntu    2701  0.3  3.7 107788 37904 ?        S    12:17   0:00 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu    2705  0.0  3.3 107120 34132 ?        S    12:17   0:00 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu    2716  0.0  0.0  10460   932 pts/0    S+   12:20   0:00 grep --color=auto celery
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ sudo kill -9 2701 2705
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ ps aux|grep "celery"
ubuntu    2720 16.3  3.7 107796 37908 ?        S    12:25   0:00 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu    2724  0.0  3.3 107144 34084 ?        S    12:25   0:00 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO
ubuntu    2726  0.0  0.0  10460   932 pts/0    S+   12:25   0:00 grep --color=auto celery

我不明白这里发生了什么。在我杀死前2名后,似乎有2个新的芹菜工人流程出现。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为没有证据表明你做错了什么。

Celery是一系列流程。最重要的是一位主管,让一些工人准备好回答请求。

工人是一次性的,但主管无法分辨工人在做什么。当工人退出时,主管会收到信号并启动一个新信号。就是这样。

如果您更改配置,主管可以自行重新配置(如果您已配置它!),但工作人员不会观察该配置。它们只有在它们诞生时才会被配置。

你正在做的“杀戮”是杀死那些工人,并期望替代工人在他们出生时拥有你想要的设置。

要求主管停止自己和工人,然后重新加载,然后重新开始,可以在没有请求得到答复的情况下留下几秒钟。据我所知,这是supervisorctl的好处。

所以,你告诉我们的任何事情都没有明显的错误。当然,您应该期望更换工人。