面料杀死gunicorn进程并重新启动

时间:2015-10-08 11:38:39

标签: 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)

当我运行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

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

2 个答案:

答案 0 :(得分:5)

这是因为你的枪炮过程并没有完全命名为gunicorn而且你可能有不止一个枪炮进程(主人和工人)。

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

sudo('pkill -HUP -f [g]unicorn.*master')    

根据您的评论,似乎您的大部分问题都归因于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)

请注意,此处不需要您的sudo(' ps ax | grep gunicorn')。

答案 1 :(得分:0)

我用这个:

sudo('reload gunicorn')