在 jupyter notebook 中停止 SimpleHttpSever
Stop SimpleHttpSever in jupyter notebook
我在 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()
效果很好,但我怎样才能在下一个输入块中停止它?
服务器 运行 在后台,您需要搜索 PID 并杀死它,例如:
netstat -tulpn
Netstat 输出:
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 12332/python
用 pkill 或 kill 杀死 PID:
kill 12332
答案是你不能。
您无法在 Jupyter Notebook 中引用以前的单元格(或结果)- see this open issue 以获取有关讨论的更多详细信息。
这意味着一旦您使用了 serve_forever() 函数,您就无法再操纵 object。
不过,可以重写 serve_forever 以满足您的需要。目前它无论如何都会提供服务,但添加一个允许您连接并发出 'shutdown' 命令的条件将避免稍后调用 object 的需要。您可以只连接到套接字并发出自定义的 header 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()
我在 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()
效果很好,但我怎样才能在下一个输入块中停止它?
服务器 运行 在后台,您需要搜索 PID 并杀死它,例如:
netstat -tulpn
Netstat 输出:
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 12332/python
用 pkill 或 kill 杀死 PID:
kill 12332
答案是你不能。
您无法在 Jupyter Notebook 中引用以前的单元格(或结果)- see this open issue 以获取有关讨论的更多详细信息。
这意味着一旦您使用了 serve_forever() 函数,您就无法再操纵 object。
不过,可以重写 serve_forever 以满足您的需要。目前它无论如何都会提供服务,但添加一个允许您连接并发出 'shutdown' 命令的条件将避免稍后调用 object 的需要。您可以只连接到套接字并发出自定义的 header 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()