使用python simpleHTTP服务器保持服务器正常运行

时间:2019-12-26 14:09:30

标签: python http web server

我正在尝试创建一个博客并维持下去,在该博客上,内容只会以html / css或某些图像形式出现,因此我不需要任何复杂的Web服务器,因此我尝试编写一个脚本来会保持活跃的博客,但是有时它确实很频繁,它只是关闭了,我尝试获取它的日志,起初它是关于broken pipe的事情,但是我尝试使用{{1}来修复它},而且我不知道如何一直保持服务器正常运行。这是代码:

signal handling

3 个答案:

答案 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 ###
相关问题