Python Jupyter笔记本前面基于http.server的代理服务器
我正在尝试编写python代码,它充当Jupyter笔记本服务器前面的代理服务器。我想要的是,在我在某个端口(例如3889)启动jupyter笔记本后,而不是直接进入笔记本(例如。http://localhost:3889)我将通过代理服务(即。http://localhost:8081). 目前,通过下面附加的代码,我可以加载笔记本,但是一些来自浏览器的网络呼叫被卡在“挂起”状态。 我错过了什么Python Jupyter笔记本前面基于http.server的代理服务器,python,python-requests,jupyter-notebook,Python,Python Requests,Jupyter Notebook,我正在尝试编写python代码,它充当Jupyter笔记本服务器前面的代理服务器。我想要的是,在我在某个端口(例如3889)启动jupyter笔记本后,而不是直接进入笔记本(例如。http://localhost:3889)我将通过代理服务(即。http://localhost:8081). 目前,通过下面附加的代码,我可以加载笔记本,但是一些来自浏览器的网络呼叫被卡在“挂起”状态。 我错过了什么 from http.server import HTTPServer, BaseHTTPReque
from http.server import HTTPServer, BaseHTTPRequestHandler
import requests
class ProxyHTTPRequestHandler(BaseHTTPRequestHandler):
port = 3889
def do_GET(self):
resp = requests.get('http://localhost:{port}{path}'.format(port=self.port, path=self.path),
headers=self.headers)
self.send_response(resp.status_code)
for k, v in resp.headers.items():
self.send_header(k, v)
self.end_headers()
self.wfile.write(resp.content)
def do_PUT(self):
resp = requests.put('http://localhost:{port}{path}'.format(port=self.port, path=self.path),
data=self.rfile.read(),
headers=self.headers)
self.send_response(resp.status_code)
for k, v in resp.headers.items():
self.send_header(k, v)
self.end_headers()
self.wfile.write(resp.content)
def do_POST(self):
resp = requests.post('http://localhost:{port}{path}'.format(port=self.port, path=self.path),
data=self.rfile.read(),
headers=self.headers)
self.send_response(resp.status_code)
for k, v in resp.headers.items():
self.send_header(k, v)
self.end_headers()
self.wfile.write(resp.content)
if __name__ == '__main__':
server_address = ('127.0.0.1', 8081)
httpd = HTTPServer(server_address, ProxyHTTPRequestHandler)
httpd.serve_forever()
下面是通过代理加载的笔记本:
但由于一些卡住/挂起的请求,一些主要问题无法解决:
请求的详细内容如下:
(编辑:我没有在图像中包含此信息,但/api/sessions的请求类型为“POST”)