我是扭曲库的新手,我正在尝试编写一个具有特定功能的简单反向代理。对于大多数 URL,服务器应该充当反向代理,但对于匹配正则表达式的 URL,它应该自己提供服务。我已经阅读了关于动态调度的扭曲文档,并提出了以下内容:
local_urls = [
r'...',
]
class LocalResource(Resource):
def render(self, request):
return "Hello World"
class LocalOrRemoteResource(Resource):
def __init__(self, host, port, path):
Resource.__init__(self)
self.host = host
self.port = port
self.path = path
def getChild(self, path, request):
if any([re.match(url, path) for url in local_urls]):
return LocalResource()
else:
return proxy.ReverseProxyResource(self.host, self.port, path)
root = LocalOrRemoteResource('remote.server', 80, '')
site = server.Site(root)
reactor.listenTCP(8080, site)
reactor.run()
当我运行该服务器时,尝试将 Cache-Control 标头值“no-cache”解析为 HTTP 状态代码时遇到 ValueError。所以,有些事情非常不对劲。
当我更换线路时:
root = LocalOrRemoteResource('remote.server', 80, '')
有了这个
root = proxy.ReverseProxyResource('remote.server', 80, '')
它工作正常。
谁能看到我做错了什么?