Пример #1
0
def https_resolve(qname, qtype, queobj):
    queobjt = Queue.Queue()
    for _ in range(https_resolve_threads):
        thread.start_new_thread(_https_resolve, (qname, qtype, queobjt))
    for _ in range(https_resolve_threads):
        iplist = queobjt.get()
        if iplist: break
    queobj.put(iplist)
Пример #2
0
 def __init__(self, max_items, expire=None):
     self.cache = {}
     self.max_items = int(max_items)
     self.expire = expire
     self.key_expire = {}
     self.key_noexpire = set()
     self.key_order = collections.deque()
     self.lock = threading.Lock()
     if expire:
         thread.start_new_thread(self._cleanup, ())
Пример #3
0
def spawn_later(seconds, target, *args, **kwargs):
    def wrap(*args, **kwargs):
        sleep(seconds)
        try:
            target(*args, **kwargs)
        except Exception as e:
            logging.warning('%s.%s 错误:%s', target.__module__, target.__name__,
                            e)

    thread.start_new_thread(wrap, args, kwargs)
Пример #4
0
def https_resolve(qname, qtype, queobj):
    if dnshostalias not in dns:
        dns.set(dnshostalias, GC.IPLIST_MAP[GC.DNS_OVER_HTTPS_LIST], 24 * 3600)

    queobjt = Queue.Queue()
    for _ in range(https_resolve_threads):
        thread.start_new_thread(_https_resolve, (qname, qtype, queobjt))
    for _ in range(https_resolve_threads):
        iplist = queobjt.get()
        if iplist: break
    queobj.put(iplist)
Пример #5
0
def _dns_over_https_resolve(qname):
    n = 0
    xips = []
    iplist = classlist()
    queobj = Queue.Queue()
    if '4' in GC.LINK_PROFILE:
        thread.start_new_thread(https_resolve, (qname, A, queobj))
        n += 1
    if '6' in GC.LINK_PROFILE:
        thread.start_new_thread(https_resolve, (qname, AAAA, queobj))
        n += 1
    for _ in range(n):
        result = queobj.get()
        if hasattr(result, 'xip'):
            xips.append(result.xip[0])
        iplist += result
    if xips:
        iplist.xip = '|'.join(xips), None
    return iplist
Пример #6
0
def spawn_later(seconds, target, *args, **kwargs):
    def wrap(*args, **kwargs):
        sleep(seconds)
        target(*args, **kwargs)

    thread.start_new_thread(wrap, args, kwargs)
Пример #7
0
def spawn_later(seconds, target, *args, **kwargs):
    def wrap(*args, **kwargs):
        __import__('time').sleep(seconds)
        target(*args, **kwargs)

    thread.start_new_thread(wrap, args, kwargs)