首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有ssh shell的gunicorn中运行子进程会导致500内部服务器错误

在没有ssh shell的gunicorn中运行子进程会导致500内部服务器错误
EN

Stack Overflow用户
提问于 2016-03-03 09:53:30
回答 1查看 1.4K关注 0票数 0

我在python3.4中使用烧瓶做了一些尝试,当我在nginx后面使用gunicorn运行我的应用程序时遇到了一些问题,并在登录ssh之后关闭了ssh会话,然后运行如下:

代码语言:javascript
复制
gunicorn -w 3 -n MultiServer -b 127.0.0.1:8081 app:app &

只要我在我的ssh会话中,一切都很好。关闭它之后,仍然可以访问我的站点,但是一旦我按下了以下功能:

代码语言:javascript
复制
def get_audio(self, a_link, a_format="mp3"):
    a_name = str(self._tmpDownloadDir + "/%(title)s.%(ext)s")
    ex = 'youtube-dl -o "'+ a_name +'" --no-playlist --extract-audio --audio-format '+ a_format + ' "' + a_link + '"'
    if subprocess.call(ex, shell=True) == 0:
        a_name = self._moveAudio()
        return (a_link, a_name, a_format)
    else:
        raise UnsuportedFormatException

我发现了一个内部服务器错误。所有其他站点和功能都在正常工作。

以下是完整的代码:

MultiServer

特别是:YoutubeService

如前所述,只要我用ssh登录,一切都很好.我还设置了shell=True。

更新:

好的,我在我的app.py中尝试了这个:

代码语言:javascript
复制
if __name__ == "__main__":
    handler = logging.FileHandler('/tmp/app.log')                             
    handler.setLevel(logging.ERROR) 
    app.logger.addHandler(handler) 
    app.debug = True
    app.run()

但是日志仍然是空的,没有发生调试。

还修复了火奴鲁鲁日志:

代码语言:javascript
复制
gunicorn --error-logfile /tmp/app1.log -w 3 -n MultiServer -b 127.0.0.1:8081 app:app &

它也是空的,只是一些关于工人的信息开始了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-04 11:39:44

在使用ssh登录之后,我运行以下命令: -w 3 -n MultiServer -b 127.0.0.1:8081应用程序:app& 只要我在我的ssh会话中,一切都很好。在我关闭它之后,我的网站仍然可以访问,但是.

你不能那样跑火鸟。它是ssh会话的一部分,当您注销时它会被杀死(特别是,它失去了它的控制终端并获得了SIGHUPped)。

您可以通过使用--daemon标志来更好地使用gunicorn背景本身来解决这一问题,但是您应该考虑从一个适当的过程控制系统(如systemd或主管)中运行gunicorn。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35768687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档