web.py框架工程使用nohup启动后时常出现broken pipe异常

本文主要描述了在使用web.py框架并用nohup启动服务时遇到的'Broken pipe'异常问题。分析了问题产生的原因,即client主动断开连接导致服务器在返回时出错。提出了通过切换到uWSGI作为服务器来解决此问题,介绍了uWSGI的特性,包括其作为HTTP服务器的角色以及master和worker进程的管理方式。更换uWSGI后,进程的文件描述符显示正常,问题得到解决。
摘要由CSDN通过智能技术生成

问题描述

web.py框架工程,使用nohup方式启动,访问几次后服务平台挂掉,页面报错如下:
broken pipe报错信息
服务重启,即可恢复;但是过一会又会重复当前异常,纠结(☍﹏⁰)……

原因分析

百度搜索后,找到这个链接https://www.cnblogs.com/icejoywoo/p/3908290.html,回答比较符合当前状况:
ll /prod/${pid}/fd,即当前进程打开的所有文件:
fd为2的文件,即stderr(标准错误输出)指向一个broken pipe,但实际上应该指向一个日志文件。可能是某个操作导致其指向了一个pipe。
“[Errno 32] Broken pipe “ 产生的原因:
由于 client 在服务器返回前主动断开连接,所以服务器在返回时写 socket 收到SIGPIPE报错。

当前解决方案

考虑到nohup守护进程稳定性问题,此次替换成uWSGI启动,解决了上述问题。
nohup:
守护进程,不间断地运行命令,忽略所有挂掉信号。

uWSGI:
实现了WSG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值