Я новичок в скрученной библиотеке, и я пытаюсь написать простой обратный прокси с определенной функцией. Для большинства URL-адресов сервер должен действовать как обратный прокси, но для URL-адресов, соответствующих регулярному выражению, он должен обслуживать их самостоятельно. Я прочитал витую документацию по динамической диспетчеризации и придумали следующее:Динамическая отправка URL с Twisted ReverseProxyResource
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()
Когда я бегу, что сервер попадает в ValueError, пытаясь не разобрать значение заголовка Cache-Control «не-кэш», как Код состояния HTTP. Итак, что-то пошло не так.
Когда я заменить строку:
root = LocalOrRemoteResource('remote.server', 80, '')
с этим
root = proxy.ReverseProxyResource('remote.server', 80, '')
он работает отлично.
Может ли кто-нибудь увидеть, что я делаю неправильно?