连接服务器时如何避免程序冻结

时间:2015-05-24 18:12:21

标签: python connection whois pywhois

我有一个小脚本可以过滤那些尚未注册的域名。我使用pywhois模块。问题是它在几次(有时数百次)请求之后突然冻结并且什么都不做。我认为这不是禁令,因为我可以在冻结后立即运行该程序并且它可以正常工作。

我想避免这种冻结。我的想法是计算函数的运行时间,如果时间越过某些行(例如10秒),它会重复代码。

你有什么建议如何避免冻结?或者更好的检查域名的方法?

以下是代码:

for keyword in keywords:
        try:
            details = pythonwhois.get_whois(keyword+'.com')
        except Exception as e:
            print e
            continue
        if 'status' not in details.keys():
            print 'Free domain!'
            print keyword

2 个答案:

答案 0 :(得分:3)

This method is prone to change (if the underlying library changes), however, you can call internal socket functions to set a timeout for all pythonwhois network calls. For example:

TIMEOUT = 5.0 # timeout in seconds
pythonwhois.net.socket.setdefaulttimeout(TIMEOUT)
pythonwhois.get_whois("example.com")

答案 1 :(得分:0)

也许你可以试试dnspython。看起来您只想检查域名是否已注册。例如:

split

DNS解析器的默认超时时间为2秒。如果您想更改它,可以使用不同的import dns.resolver for keyword in keywords: try: dns.resolver.query(keyword+'.com') except dns.resolver.NXDOMAIN: print(keyword+'.com is available!') 创建dns.resolver.Resolver的新实例。

要使其成为多线程,如果可以使用python3,则线程池将是最佳选择:

timeout