2016-05-01 15 views
0

ich in Twisted einen einfachen Proxy-Skript habe, und ich möchte das Skript von examplefile statt /etc/hosts zu lesen:Mit createResolver() in Twisted

from twisted.internet import reactor 
from twisted.web import proxy, server 
from twisted.python import log 
from twisted.names.client import createResolver 

createResolver(hosts='/root/examplefile') 
site = server.Site(proxy.ReverseProxyResource('www.example.com', 80, ''.encode("utf-8"))) 
reactor.listenTCP(80, site) 
reactor.run() 

Als ich das Skript ausführen, die createResolver() Funktion wird einfach ignoriert . Ich bin mir nicht sicher, wie ich die createResolver() Funktion zu meinem Skript implementiere. Kann mir jemand sagen, was ich falsch mache? Vielen Dank!

Antwort

1

Nach dem Reaktor docs stellt die IReactorPluggableResolver eine installResolver Methode (implementiert in ReactorBase)

Nicht getestet, aber ich vermute, es ist so etwas wie:

reactor.installResolver(createResolver(hosts='/root/exampleFile')) 
+0

hmm .. so weit, als ich es versucht, es didn‘ Ich arbeite und habe gerade mein Skript Timeout gemacht, aber das hat mich definitiv in die richtige Richtung gebracht, danke !! – Cristian

0

Ihr Code in das kaputt ist Beispiel. Sie rufen createResolver auf und ignorieren den Rückgabewert des Resolvers, der die angegebene Datei liest. Twisted speichert den Resolver beim Aufruf nicht magisch. Sie verstehen Programmierung Rückgabewerte von Funktionen usw.

Sie müssen auch ein Byte-String für die Domäne also passieren prepend es mit einem b

b'www.example.com'