织物杀死gunicorn过程并重新启动

gam*_*mer 0 python django fabric gunicorn

我正在将织物用于使用gunicorn的站点部署。我有以下由deploy()函数调用的代码。

def restart_gunicorn():
    sudo('ps ax|grep gunicorn')
    sudo('pkill -HUP -f [g]unicorn.*master')
    sudo('gunicorn -b 0.0.0.0:8080 %(path)s/application/wsgi &' % env)
Run Code Online (Sandbox Code Playgroud)

当我运行fab文件时,它显示以下内容:

    out:  7694 pts/18   S+     0:00 grep gunicorn
[127.0.0.1:2222] out: 

[127.0.0.1:2222] sudo: pkill -HUP -f [g]unicorn.*master
[127.0.0.1:2222] out: sudo password:
[127.0.0.1:2222] out: 

Fatal error: sudo() received nonzero return code 1 while executing!

Requested: pkill -HUP -f [g]unicorn.*master
Run Code Online (Sandbox Code Playgroud)

我认为它应该杀死gunicorn并重新启动它。我在这里缺少什么?

e4c*_*4c5 5

那是因为您的Gunicorn流程名称不完全相同,gunicorn并且您可能正在运行多个Gunicorn流程(主人和工人)。

通常是您想杀死的主人。很少想要将其正确销毁,更常见的是,您只想重新加载代码,因此-HUP就足够了。所以试试这个:

sudo('pkill -HUP -f [g]unicorn.*master')    
Run Code Online (Sandbox Code Playgroud)

根据您的评论,看来您的大多数问题是由于Gunicorn根本不在系统上运行所致。有两种选择,您可以事先进行测试,也可以只使用warn_only

with settings(warn_only=True):
    sudo('pkill -HUP -f [g]unicorn.*master')
    sudo('gunicorn -b 0.0.0.0:8080 %(path)s/application/wsgi &' % env)
Run Code Online (Sandbox Code Playgroud)

请注意,这里不需要您的sudo('ps ax | grep gunicorn')行。