【问题标题】:Using createResolver() in twisted在扭曲中使用 createResolver()
【发布时间】:2016-08-26 01:59:34
【问题描述】:

我有一个简单的twisted代理脚本,我希望脚本从examplefile而不是/etc/hosts读取:

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()

当我运行脚本时,createResolver() 函数会被忽略。我不确定如何在我的脚本中实现 createResolver() 函数。谁能告诉我我做错了什么?谢谢!

【问题讨论】:

    标签: python dns twisted reverse-proxy hosts


    【解决方案1】:

    根据reactordocs,IReactorPluggableResolver提供了installResolver方法(在ReactorBase中实现)

    未测试,但我猜是这样的:

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

    【讨论】:

    • hmm.. 到目前为止,当我尝试它时,它不起作用,只是让我的脚本超时,但这绝对让我朝着正确的方向前进,谢谢!!
    【解决方案2】:

    你的代码在这个例子中被破坏了。您调用 createResolver 并忽略它的返回值,该值是将读取指定文件的解析器。 Twisted 在调用时不会神奇地存储解析器。您了解函数等的编程返回值。

    您还需要为域传递一个字节字符串,即在其前面加上b

    b'www.example.com'
    

    【讨论】:

      猜你喜欢
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多