过程描述
刚不久用 Tornado 写了一个项目,本打算部署在 Nginx 上,但是因为公司的一些原因就没有使用 Nginx,直接在命令行中启动
当我从命令行以后台的方式启动以后,是可以正常访问的
python start.py &
但是,当我关闭远程 ssh 连接后,程序就出问题了,程序没有任何反应,但是进程却好好的待在进程池中等待 CPU 的召唤。通过 try
捕获到了异常 [Errno 5] Input/output error
后经过排查找到了问题,这是因为我在程序中有 print
语句,当我把远程 ssh 退出后,就相当于把它的 shell 关闭了,没有了 shell 的进程 print
就没有地方输出字符,不能“写”到屏幕上了,所以就会报一个 I/O
错误
解决方案
-
不使用命令行的方式启动,将程序放入
crontab
中定时启动 -
注释或删除程序中有
print
语句的地方 -
使用 nohup 运行命令,可以使命令永久的执行下去,和用户终端没有关系,断开SSH连接都不会影响程序的运行
来源:CSDN
作者:whatday
链接:https://blog.csdn.net/whatday/article/details/104067430