【问题标题】:Python SimpleHTTPServer keeps going down and I don't know whyPython SimpleHTTPServer 不断下降,我不知道为什么
【发布时间】:2016-07-20 04:43:09
【问题描述】:

这是我第一次使用 SimpleHTTPServer,老实说,这是我第一次使用一般的 Web 服务器,我遇到了一个令人沮丧的问题。我将启动我的服务器(通过 SSH),然后我会尝试访问它,一切都会好起来的。但我会在几个小时后回来,服务器将不再运行。到那时,SSH 会话已经断开,所以我看不到是否有任何错误消息。 (是的,我知道我应该使用 screen 之类的东西来保存 shell 消息——现在就尝试,但我需要等待它再次关闭。)

我认为这可能只是我的代码引发了异常,因为我没有错误处理,但我添加了应该是一个非常全面的 try/catch 块,但我仍然遇到这个问题。 (我觉得这可能不是最好的错误处理方法,但我是新手……如果有更好的方法,请告诉我)

class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    # (this is the only function my request handler has)
    def do_GET(self):
        if 'search=' in self.path:
            try:
                # (my code that does stuff)
            except Exception as e:
                # (log the error to a file)
            return
        else:
            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

是否有人对要检查的内容或诊断问题的方法有任何建议?我想,最有可能的是我的代码只是在其他地方崩溃了……但如果有什么特别需要我了解的关于 SimpleHTTPServer 的操作方式,请告诉我。

【问题讨论】:

  • 作为第一步,您可以添加except BaseException as e: 来捕获所有其他可能引发的异常,例如SystemExit,如果您的代码可能会意外引发该异常。
  • @TadhgMcDonald-Jensen BaseException 捕获的异常类型比 Exception 多吗?
  • 是的,如果尝试引发任何不是 BaseException 子类的异常,则会引发TypeError: exceptions must derive from BaseException
  • so BaseException 捕获所有可能的错误类型。虽然我能想到的只有 SystemExit 和 GeneratorExit,它们不是 Exception 的子类。哦,键盘中断

标签: python web webserver simplehttpserver


【解决方案1】:

我从来没有让SimpleHTTPServer 长时间运行过,通常我只是用它来临时传输几个文件,但我想只要你的安全性就不会那么糟糕限制在其他地方(即防火墙),您不需要太大的规模。

SSH 会话即将结束,这会终止您的任务(前台和后台任务)。有两种解决方案:

  1. 就像您已经提到的那样,使用屏幕等实用程序来防止会话结束。
  2. 如果您真的希望它运行更长的时间,您应该查看您的操作系统文档,了解如何启动/停止/启用服务(现在大多数酷孩子都在使用 systemd ,但您也可能会发现自己在使用SysVinit 或其他一些初始化系统)

编辑:

这个链接在 cmets 中,但我认为我应该把它放在 here 因为它很好地回答了这个问题

【讨论】:

  • ssh 会话如何结束?它会向 python 程序提出KeyboardInterrupt 吗? (在这种情况下,except BaseException 将运行而不是退出)
  • SSH 会话正在结束,因为 sshd 被配置为在一段时间后断开空闲会话(您可以调整这些设置here is 一些关于它们的信息),而here 是一些关于什么的信息实际上是为了杀死会话拥有的进程。
  • Ahhhhhhh 好吧,这是我对 ssh 工作原理的基本误解。这就是答案。谢谢。
猜你喜欢
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多