本文整理匯總了Python中pycares.Channel方法的典型用法代碼示例。如果您正苦於以下問題:Python pycares.Channel方法的具體用法?Python pycares.Channel怎麽用?Python pycares.Channel使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類pycares
的用法示例。
在下文中一共展示了pycares.Channel方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: initialize
# 需要導入模塊: import pycares [as 別名]
# 或者: from pycares import Channel [as 別名]
def initialize(self, io_loop=None):
self.io_loop = io_loop or IOLoop.current()
self.channel = pycares.Channel(sock_state_cb=self._sock_state_cb)
self.fds = {}
示例2: resolve_cares
# 需要導入模塊: import pycares [as 別名]
# 或者: from pycares import Channel [as 別名]
def resolve_cares(name):
# create new c-ares channel
careschan = pycares.Channel(timeout=DNS_TIMEOUT, tries=1)
# if we don't get a response we return the default value
result = Resultholder()
result.value = DNS_TIMEOUT_VALUE
def setresult_cb(res, error):
# ignore error and just take first result ip (randomized anyway)
if res and res.addresses:
result.value = res.addresses[0]
# resolve with cb
careschan.gethostbyname(name, socket.AF_INET, setresult_cb)
# now do the actual work
readfds, writefds = careschan.getsock()
canreadfds, canwritefds, _ = select.select(readfds, writefds, [],
DNS_TIMEOUT)
for rfd in canreadfds:
careschan.process_fd(rfd, -1)
# if the query did not succeed, setresult was not called and we just
# return result destroy the channel first to not leak anything
careschan.destroy()
return result.value
# workaround until py3 nonlocal (for c-ares and gevent)