Celery Worker进程无法终止求助:PID动态变化+Redis连接失败
问题分析与解决
1. 你看到的"残留进程"其实是grep命令本身
你执行ps aux | grep 'celery worker'时,输出里的进程2577根本不是Celery Worker,而是grep命令自己。grep在执行过程中会被自己的过滤规则匹配到,当你执行kill命令时,grep已经执行完毕退出了,所以会提示No such process。
要准确过滤出Celery Worker进程(排除grep本身),使用以下命令:
ps aux | grep '[c]elery worker'
如果输出为空,说明当前没有任何Celery Worker在运行。
2. Redis连接拒绝的原因
celery -A request_handler.celery control shutdown需要Redis作为消息中间件正常运行,才能和Worker通信发送停止指令。你遇到的redis.exceptions.ConnectionError说明Redis服务未启动,或者端口/配置存在问题。
先启动Redis服务,再执行shutdown命令才能生效。如果Redis无法启动,可先用上述正确命令找到Worker的PID,再执行kill指令终止进程。
3. 关于"残留进程"的必要性与问题严重性
重启电脑后,系统会清理所有之前的进程,不可能存在真正的残留进程。你之前的困惑完全是因为误解了grep的输出结果。
如果用ps aux | grep '[c]elery worker'确认没有Worker进程在运行,那这个问题完全不需要重视,也不存在所谓的残留进程影响系统的情况。
内容的提问来源于stack exchange,提问作者ayseguldmrblk
相关产品推荐
相关产品推荐

