django 我如何重新启动gunicorn hup,我不知道masterpid或PID文件的位置

7gyucuyw  于 2023-05-23  发布在  Go
关注(0)|答案(5)|浏览(195)

我想重启一个使用gunicorn运行的Django服务器。
我知道如何在我的系统中使用gunicorn。但是现在我需要重新启动一个不是我设置的远程服务器。
我不知道masterpid重启服务器怎么才能得到masterPID。
通常我HUP gunicorn与sudo kill -s HUP masterpid
我试过ps aux|grep gunicorn
我在任何地方都没有找到gunicorn.pid文件。
如何获得masterpid

jchrr9hc

jchrr9hc1#

下面的一个班轮,得到了完美的工作完成:

kill -HUP `ps -C gunicorn fch -o pid | head -n 1`

说明

ps -C gunicorn只列出gunicorn命令的进程,即worker和master进程。worker是master的子进程,如使用ps -C gunicorn fc -o ppid,pid,cmd所示。我们只需要master的pid,因此h标志用于删除第一行PID文本。注意,f标志确保master打印在worker之上。
正确的做法是只向master发送HUP信号。通过这种方式,gunicorn可以正常重启,* 只重新创建worker,而不是master *。

pgx2nnw8

pgx2nnw82#

您可以使用选项'-p'运行gunicorn,这样您就可以从pid文件中获取主进程的pid。例如:

gunicorn -p app.pid your_app.wsgi.app

您可以通过以下方式获取master的pid:

cat app.pid
4urapxun

4urapxun3#

这也应该可以重新启动gunicorn:

ps aux |grep gunicorn |grep yourapp | awk '{ print $2 }' |xargs kill -HUP
5hcedyr0

5hcedyr04#

**第一步:**进入/etc/systemd/system/gunicorn.service,打开文件,添加以下行

PIDFile=/run/gunicorn/gunicorn.pid  
--pid /run/gunicorn/gunicorn.pid

示例:

[Service]
PIDFile=/run/gunicorn/gunicorn.pid
WorkingDirectory=/home/django/django_project
ExecStart=/usr/bin/gunicorn --pid /run/gunicorn/gunicorn.pid --name=django_project.....
User=django
Group=django

**第二步:**如果gunicorn. conf文件不存在,请转到/etc/tmpfiles.d/新建文件gunicorn.conf

添加波纹管

d /run/gunicorn 0755 django django -

其中django =用户名和组名

**第三步:**重启服务器或/etc/init.d/gunicorn restart重启gunicorn生效
您的pid文件位置是/run/gunicorn/gunicorn.pid现在检查..

im9ewurl

im9ewurl5#

在krizex的答案answer的基础上,当主pid存储在文件中时,您可以通过一个命令优雅地重新加载应用程序,如下所示

$ cat app.pid |xargs kill -HUP

我本来想对答案本身发表评论,但我还没有足够的声誉来评论😢。

相关问题