无法终止 linux 个进程

Having trouble killing linux processes

我正在按照 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 个新的 celery worker 进程。

我做错了什么?

我看不出你做错了什么的证据。

Celery 是进程的集合。最重要的是让一定数量的工人准备好响应请求的主管。

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

如果您更改配置,主管可以重新配置自己(如果您已这样配置!),但工作人员不会查看该配置。他们只有在出生时才会配置。

你对 "kill" 所做的就是杀死那些工人,并期望替代工人在他们出生时拥有你想要的设置。

要求 supervisor 停止自己和 workers,然后重新加载,然后重新启动,可能会留下几秒钟没有请求得到响应。据我所知,这就是 supervisorctl 的好处。

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