在 jupyter notebook 中停止 SimpleHttpSever



我在jupyter notebook中使用SimpleHTTPServer,如下所示:

import SimpleHTTPServer
import SocketServer
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()

工作得很好,但是我以后如何在下一个输入块中停止它?

答案是你不能。

您无法在 Jupyter Notebook 中引用以前的单元格(或其结果( - 有关讨论的更多详细信息,请参阅此未解决的问题。

这意味着一旦使用了 serve_forever(( 函数,就无法操作对象。

但是,可以重写serve_forever以满足您的需求。目前,无论如何它都会发挥作用,但添加一个允许您连接并发出"关闭"命令的条件将避免以后调用对象的需要。您可以直接连接到套接字并发出一个自定义标头,TCP 服务器将拾取并响应该标头。

作为开始此路径的快速示例:

class StoppableRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer):
    def serve_forever(self):
            while not self.stopped:
                self.handle_request()
    def not_forever(self):
        # Called from another function when a custom header is detected
        self.stopped = True
        self.server_close()

服务器在后台运行,您需要搜索PID并杀死它,就像:

netstat -tulpn

Netstat out:

tcp    0   0 0.0.0.0:8888  0.0.0.0:*  LISTEN      12332/python

用 pkill 杀死 PID 或杀死:

kill 12332

相关内容

  • 没有找到相关文章

最新更新