我正在尝试创建一个博客并维持下去,在该博客上,内容只会以html / css或某些图像形式出现,因此我不需要任何复杂的Web服务器,因此我尝试编写一个脚本来会保持活跃的博客,但是有时它确实很频繁,它只是关闭了,我尝试获取它的日志,起初它是关于broken pipe
的事情,但是我尝试使用{{1}来修复它},而且我不知道如何一直保持服务器正常运行。这是代码:
signal handling
答案 0 :(得分:0)
您可以通过应用如下手柄来解决它:
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
...
def handle(self):
try:
BaseHTTPRequestHandler.handle(self)
except socket.error:
pass
但是,这可能是个问题,因为Socket Server中存在一个错误,这意味着它无法处理多个请求at the same time
此外,如果希望HTTP服务器一次处理多个请求,则需要服务器类使用SocketServer.ForkingMixIn和SocketServer.ThreadingMixIn类之一。有关详细信息,请查看SocketServer模块的文档。
这里是一个更具体的question,列出了有关BaseHTTPServer的大多数情况
答案 1 :(得分:0)
我强烈建议gunicorn管理您的运行过程。您也可以使用此工具很好地处理多个请求和并发。我链接到自定义应用程序部分,因为您正在编写自己的
答案 2 :(得分:0)
我们可以忽略BrokenPipe并继续或捕获异常。
为了忽略,使用了SIGPIPE。但是根据python signal documentation,
请勿将SIGPIPE的处置方式设置为SIG_DFL,以避免BrokenPipeError。这样做还会导致您的程序仍在写入时,只要任何套接字连接中断,程序也会意外退出。
所以最好的方法是捕获BrokenPipeError
import sys, errno
try:
### IO operation ###
except IOError as e:
if e.errno == errno.EPIPE:
### Handle error ###