Python Jupyter笔记本前面基于http.server的代理服务器

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

我正在尝试编写python代码,它充当Jupyter笔记本服务器前面的代理服务器。我想要的是,在我在某个端口(例如3889)启动jupyter笔记本后,而不是直接进入笔记本(例如。http://localhost:3889)我将通过代理服务(即。http://localhost:8081). 目前,通过下面附加的代码,我可以加载笔记本,但是一些来自浏览器的网络呼叫被卡在“挂起”状态。 我错过了什么

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”)