【发布时间】:2011-01-17 04:24:06
【问题描述】:
我正在尝试使用Twisted.Web 框架。
注意三行 cmets(#line1、#line2、#line3)。我想创建一个代理(网关?),它将根据 url 将请求转发到两个服务器之一。如果我取消注释注释 1 或 2(并注释其余部分),请求将被代理到正确的服务器。但是,当然,它不会根据 URL 选择服务器。
from twisted.internet import reactor
from twisted.web import proxy, server
from twisted.web.resource import Resource
class Simple(Resource):
isLeaf = True
allowedMethods = ("GET","POST")
def getChild(self, name, request):
if name == "/" or name == "":
return proxy.ReverseProxyResource('localhost', 8086, '')
else:
return proxy.ReverseProxyResource('localhost', 8085, '')
simple = Simple()
# site = server.Site(proxy.ReverseProxyResource('localhost', 8085, '')) #line1
# site = server.Site(proxy.ReverseProxyResource('localhost', 8085, '')) #line2
site = server.Site(simple) #line3
reactor.listenTCP(8080, site)
reactor.run()
正如上面的代码目前所代表的那样,当我运行这个脚本并导航到服务器“localhost:8080/ANYTHING_AT_ALL”时,我得到了以下响应。
方法不允许
您的浏览器使用“GET”方法接近我(在 /ANYTHING_AT_ALL)。一世 此处只允许使用 GET、POST 方法。
我不知道我做错了什么?任何帮助将不胜感激。
【问题讨论】: