使用gunicorn在python中执行子进程时显示:[INFO]处理信号:ttou

使用gunicorn在python中执行子进程时显示:[INFO]处理信号:ttou,python,nginx,amazon-ec2,subprocess,gunicorn,Python,Nginx,Amazon Ec2,Subprocess,Gunicorn,我决定使用python的子流程,在这里我调用一个特定的命令行程序。它在关闭ec2实例之前工作,但在启动之后,命令行中显示: [信息]处理信号:ttou 这是我用过的程序。 nginx和gunicorn用于我的Web服务器,flask用于我的api,python 2.7 这是一行过去经常出现问题的代码 query=subprocess.check\u outputcooch\u cmd,shell=True 这是coach_cmd的值: coach_cmd=/opt/couchbase/bin/c

我决定使用python的子流程,在这里我调用一个特定的命令行程序。它在关闭ec2实例之前工作,但在启动之后,命令行中显示:

[信息]处理信号:ttou

这是我用过的程序。 nginx和gunicorn用于我的Web服务器,flask用于我的api,python 2.7

这是一行过去经常出现问题的代码

query=subprocess.check\u outputcooch\u cmd,shell=True

这是coach_cmd的值: coach_cmd=/opt/couchbase/bin/cbq-script=\select*来自'user',其中email='+email+'\

在我停止并启动我的ec2实例之后,它在我调用api时一直出现在日志中

[2017-10-18 02:13:39+0000][3324][INFO]处理信号:ttou


注意:我还使用了上面的命令,并在python shell中执行了它。它正在工作!我已经在nginx中更改了相应的配置以指向我的dns,并且还使用了proxy\u pass。我认为我的nginx配置很好,因为请求被路由到我的web服务器。我认为gunicorn中有某种东西会扰乱subprocess.check_输出的调用。请帮忙

我读了这篇文章,意识到我的错误:

TTIN和TTOU信号在进程尝试执行时发送到进程 在后台分别从tty读取或写入。 通常,此信号只能由作业下的进程接收 控制守护进程没有控制终端,因此不应 收到这个信号

我意识到我是在幕后启动gunicorn的。当我试图将其结果记录到终端时,这一定提示gunicorn拦截check_output的输出,从而拦截输出并使我的请求超时。我正在使用输出在我的响应有效负载中进行转换

我是如何开始gunicorn的:

gunicorn应用程序:应用程序-b 127.0.0.1:8000&

解决方案:


gunicorn app:app-B127.0.0.1:8000

我认为这是因为gunicorn正在拦截子进程发出的信号。请检查输出。我找不到办法阻止gunicorn拦截ttou信号。它们处理的信号有一个参考: