我在jupyter笔记本中使用SimpleHTTPServer,如下所示:
import SimpleHTTPServer
import SocketServer
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
效果很好,但是我怎样才能在下一个输入块中停止它?
答案 0 :(得分:2)
答案是你做不到。
您无法引用Jupyter Notebook内部的前一个单元格(或结果) - see this open issue了解有关讨论的详细信息。
这意味着一旦使用了serve_forever()函数,就无法操作对象。
但是,可以重写serve_forever以满足您的需求。目前它无论如何都会提供服务,但是添加一个允许你连接并发出'shutdown'命令的条件将避免以后调用该对象的需要。您可以只连接到套接字并发出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()
答案 1 :(得分:0)
服务器在后台运行,你需要搜索PID,就像它一样:
netstat -tulpn
Netstat out:
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 12332/python
使用pkill或kill杀死PID:
kill 12332