Celery 子进程是不是应该出现在 ps aux 中?较少的
Posted
技术标签:
【中文标题】Celery 子进程是不是应该出现在 ps aux 中?较少的【英文标题】:Should Celery sub-processes show up on ps aux | lessCelery 子进程是否应该出现在 ps aux 中?较少的 【发布时间】:2013-07-25 11:54:39 【问题描述】:我在 Tornado 服务器上使用带有 Celery 的 Supervisord(注意:不是 tcelery,因为我的服务器还没有使用任何异步功能)和三个工作线程:w1、w2 和 w3。每个都有 10 个并发。我通过主管通过将以下内容添加到 /etc/supervisord.conf 来执行此操作:
[program:sendgrid_gateway_server]
command=sudo python main.py -o runserver
numprocs=1
directory=/home/ubuntu/sendgrid_gateway/sendgrid-gateway
stdout_logfile=/home/ubuntu/sendgrid_gateway/sendgrid-gateway/logs/server_log.txt
autostart=true
autorestart=true
user=root
[program:sendgrid_gateway_server_w1]
command=celery worker -A tasks --loglevel=INFO --concurrency=10 -n w1
numprocs=1
directory=/home/ubuntu/sendgrid_gateway/sendgrid-gateway
stdout_logfile=/home/ubuntu/sendgrid_gateway/sendgrid-gateway/logs/w1_log.txt
autostart=true
autorestart=true
user=root
[program:sendgrid_gateway_server_w2]
command=celery worker -A tasks --loglevel=INFO --concurrency=10 -n w2
numprocs=1
directory=/home/ubuntu/sendgrid_gateway/sendgrid-gateway
stdout_logfile=/home/ubuntu/sendgrid_gateway/sendgrid-gateway/logs/w2_log.txt
autostart=true
autorestart=true
user=root
[program:sendgrid_gateway_server_w3]
command=celery worker -A tasks --loglevel=INFO --concurrency=10 -n w3
numprocs=1
directory=/home/ubuntu/sendgrid_gateway/sendgrid-gateway
stdout_logfile=/home/ubuntu/sendgrid_gateway/sendgrid-gateway/logs/w3_log.txt
autostart=true
第一个 [program] 块用于运行 Tornado 的主要 python 应用程序。接下来的三个(显然)是我的芹菜工人。让我担心的是,当我“supervisorctl start all”时,所有 30 个进程都显示在列表中:
根 2547 0.0 0.0 40848 1672 ? S 13:40 0:00 sudo python main.py -o runserver 根 2548 0.2 1.9 176140 33020 ? Sl 13:40 0:04 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2549 0.0 2.1 196848 35632 ? S 13:40 0:01 python main.py -o runserver 根 2560 0.2 1.9 176140 33016 ? Sl 13:40 0:03 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2561 0.2 1.9 176140 33020 ? Sl 13:40 0:03 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2581 0.0 1.6 175144 28616 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2582 0.0 1.6 175144 28624 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2583 0.0 1.6 175144 28628 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2584 0.0 1.6 175144 28628 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2585 0.0 1.6 175144 28628 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2586 0.0 1.6 175144 28632 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2587 0.0 1.6 175144 28632 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2589 0.0 1.6 175144 28636 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2590 0.0 1.6 175144 28644 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2591 0.0 1.6 175144 28640 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w3 根 2595 0.0 1.6 175144 28612 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2596 0.0 1.6 175144 28624 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2597 0.0 1.6 175144 28632 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2598 0.0 1.6 175144 28620 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2599 0.0 1.6 175144 28620 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2600 0.0 1.6 175144 28620 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2601 0.0 1.6 175144 28624 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2602 0.0 1.6 175144 28636 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2603 0.0 1.6 175144 28628 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2604 0.0 1.6 175144 28636 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2605 0.0 1.6 175144 28632 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2608 0.0 1.6 175144 28632 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2609 0.0 1.6 175144 28628 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2610 0.0 1.6 175144 28640 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2611 0.0 1.6 175144 28640 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2612 0.0 1.6 175144 28632 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2613 0.0 1.6 175144 28648 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2614 0.0 1.6 175144 28644 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w1 根 2616 0.0 1.6 175144 28640 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A 任务 --loglevel=INFO --concurrency=10 -n w2 根 2617 0.0 1.6 175144 28636 ? S 13:40 0:00 /usr/bin/python /usr/local/bin/celery worker -A tasks --loglevel=INFO --concurrency=10 -n w2
这些是 30 个 Celery 进程,加上一些额外的(不太清楚为什么会有额外的进程......) 我的印象是,任务完成后应该终止不必要的进程。是这种情况还是我只是个疯子?
提前致谢。
【问题讨论】:
【参考方案1】:是的,它们都应该显示为进程。但是,您可能希望在程序配置下使用 stopasgroup=true 和 killasgroup=true 选项来立即停止所有子进程,否则即使您使用 supervisorctl 运行 stop [programname] 命令,它们也可能继续运行。
【讨论】:
以上是关于Celery 子进程是不是应该出现在 ps aux 中?较少的的主要内容,如果未能解决你的问题,请参考以下文章
云计算学习days11---进程管理 ps aux STAT状态 pstree ps aux