【问题标题】:How to stop celery worker process如何停止芹菜工人进程
【发布时间】:2015-06-01 02:45:27
【问题描述】:

我在 Ubuntu EC2 节点上有一个 Django 项目,我一直使用它来使用 Celery 设置异步。

我正在关注this 以及文档。

我已经能够在命令行上完成一项基本任务,使用:

(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ celery --app=myproject.celery:app worker --loglevel=INFO

启动一个工人。从那以后,我对 Python 进行了一些更改,但意识到我需要重新启动一个 worker。

从命令行,我试过了:

 ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9

但我可以看到工人仍在运行。

我怎样才能杀死它?

编辑:

(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ sudo ps auxww | grep celeryd | grep -v "grep" | awk '{print $2}' | 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

【问题讨论】:

  • 试试这个sudo ps auxww | grep celeryd | grep -v "grep" | awk '{print $2}' | sudo xargs kill -HUP
  • 使用相同的命令代替-HUP 使用-9 代替
  • 没有错误但进程仍在运行。
  • 感谢您的帮助。

标签: python django amazon-ec2 celery


【解决方案1】:

在终端试试这个

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 commmand 杀死所有进程 id

sudo kill -9 id1 id2 id3 ...

来自 celery 文档

ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9

或者如果你正在运行celeryd

ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9

注意

如果您在supervisor 中运行celery,即使终止进程,它也会自动重新启动(如果在主管脚本中使用autorestart=True)。

【讨论】:

  • 感谢您查看此内容。我试过 (env1)ubuntu@ip-172-31-22-65:~/projects/tp$ ps aux|grep celery worker grep: worker: No such file or directory
  • (env1)ubuntu@ip-172-31-22-65:~/projects/tp$ ps aux|grep 'celery worker' -> ubuntu 12436 0.0 0.0 10460 936 pts/7 S+ 18 :45 0:00 grep --color=auto celery worker
  • 这意味着没有芹菜工人在运行?试试ps aux|grep celery
  • 感谢您对此的帮助和详细的解释。虽然我仍在努力解决我的问题,但你给了我一些很好的信息。
  • 还有问题吗? sudo kill -9 9756 9760 ?
【解决方案2】:
pkill -f "celery worker"

通过字符串模式轻松杀死进程

【讨论】:

    【解决方案3】:

    celery -A proj control shutdown

    已编辑,增加了一点点。

    您应该从项目的根目录使用此命令,“proj”是您的项目的名称,例如,如果您的 Django 项目名为 DjangoApp,则该命令应如下所示

    celery -a DjangApp control shutdown

    这应该/将阻止您的芹菜工人参与该项目

    【讨论】:

    • 仅供参考:此答案因其长度或内容而被某人标记为“低质量”。这可能是因为您建议的解决方案没有附带说明文字。
    • 我不明白proj 是什么?
    • @KyleBridenstine proj 是您的应用程序/项目的名称,例如,如果您的应用程序被称为 DjangoApp,那么命令将是来自您的 pjoject 根目录的 celery -A DjangoApp control shutdown
    • 这个对我有用。我在这里尝试用其他几种方法杀死芹菜工人。但是ps -eaf | grep celery 告诉我它们并没有真正起作用。
    【解决方案4】:
    ps auxww | grep 'celery worker' | grep -v " grep " | awk '{print $2}' | xargs kill -9
    

    这与之前介绍的非常相似,但有所改进,因为避免了尝试终止 grep 进程时显示的错误..

    【讨论】:

    • 在尝试了所有其他方法之后,这终于对我有用了
    猜你喜欢
    • 2023-03-02
    • 2022-10-25
    • 2019-03-13
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多