【发布时间】:2016-04-28 18:40:19
【问题描述】:
我正在尝试使用未记录的库uwhoisd,但我无法弄清楚如何在UWhois 对象上成功调用whois() 函数。
我通过调用具有以下内容的文件 UwhoisDeamon.py 来启动守护进程:
import uwhoisd
uwhoisd.main()
我给python的参数是我下载源代码时包含在extra目录中的*.ini file
启动守护进程成功,输出如下:
2016-04-21 19:00:19,830 INFO:uwhoisd 在读取配置文件 '/path/to/my/ini/uwhoisd.ini' 2016-04-21 19:00:19,838 信息:uwhoisd 收听 0.0.0.0:4243 2016-04-21 19:00:19,842 信息:uwhoisd 缓存已激活 [2016/04/21 17:00:19] {diesel} 警告|启动柴油
现在我正在尝试通过启动一个单独的 python 实例在 google.com 上执行 whois,但我被打了耳光(我重复使用了 this 代码):
from os import path
import uwhoisd
from uwhoisd.utils import make_config_parser
HERE = path.dirname(__file__)
def create_uwhois():
"""Prepare a UWhois object for testing."""
config = path.join(HERE, 'uwhoisd.ini')
parser = make_config_parser(uwhoisd.CONFIG, config)
uwhois = uwhoisd.UWhois()
uwhois.read_config(parser)
return uwhois
uwhois = create_uwhois()
# uwhois = uwhoisd.UWhois()
result = uwhois.whois("google.com")
print result
结果如下:
Traceback (most recent call last):
File "/home/user/.eclipse/org.eclipse.platform_3.8_155965261/plugins/org.python.pydev_3.9.0.201411111611/pysrc/pydevd.py", line 2183, in <module>
globals = debugger.run(setup['file'], None, None)
File "/home/user/.eclipse/org.eclipse.platform_3.8_155965261/plugins/org.python.pydev_3.9.0.201411111611/pysrc/pydevd.py", line 1622, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/path/to/my/project/Whois/WhoisChecker.py", line 17, in <module>
result = uwhois.whois("google.com")
File "/usr/local/lib/python2.7/dist-packages/uwhoisd/__init__.py", line 137, in whois
with net.WhoisClient(server, port) as client:
File "/usr/local/lib/python2.7/dist-packages/diesel/client.py", line 16, in __init__
ip = self._resolve(self.addr)
File "/usr/local/lib/python2.7/dist-packages/diesel/client.py", line 21, in _resolve
return resolve_dns_name(addr)
File "/usr/local/lib/python2.7/dist-packages/diesel/resolver.py", line 67, in resolve_dns_name
except (NotFound, Timeout):
File "/usr/local/lib/python2.7/dist-packages/diesel/util/lock.py", line 24, in __exit__
self.release()
File "/usr/local/lib/python2.7/dist-packages/diesel/util/lock.py", line 18, in release
fire(self)
File "/usr/local/lib/python2.7/dist-packages/diesel/core.py", line 92, in fire
return current_loop.fire(*args, **kw)
AttributeError: 'NoneType' object has no attribute 'fire'
在我看来,uwhoisd 用来在客户端和守护程序应用程序之间进行通信的diesel 库需要一些特殊条件才能使其工作。从我可以看到神秘的current_loop 没有运行。但是我以前从未使用过柴油,我不知道该怎么做。在我看来,我必须以某种方式启动柴油循环,然后才能执行那些 whois 查询。
一个可行的例子会很棒。我选择uwhoisd的主要原因是我可以在“win.win”等异国网站上执行whois。它还缓存响应,这意味着更快的速度和更少的网络。
【问题讨论】:
标签: python proxy network-programming client whois