我正在嘗試使用Twisted.Web框架。如何讓我的簡單雙絞線代理工作?
注意下列三個行註釋(#一號線,2號線#,#3號線)。我想創建一個代理(網關?),根據網址將請求轉發給兩個服務器之一。如果我取消註釋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()
正如上面的代碼目前維持,當我運行此腳本並導航到服務器的「本地主機:8080/ANYTHING_AT_ALL」我得到的迴應如下。
不允許的方法
您的瀏覽器找我(在/ ANYTHING_AT_ALL)與方法 「GET」。我在 只允許GET,POST這裏的方法。
我不知道我做錯了什麼?任何幫助,將不勝感激。
感謝您的回覆。是的,我顯然沒有讀足夠批判的眼光。似乎我在「葉子」上,因爲我的路徑只有1的深度,但我想我應該想到「如果我是葉子,我怎麼能生一個孩子」。謝謝。 – 2010-02-16 20:47:31