python - Тема не заканчивается - PullRequest
0 голосов
/ 21 сентября 2018

программа работает нормально и не застревает в конце:

   def process(self, task):
        global alive
        global dead
        global tested
        proxy = task
        log_msg = str("Trying HTTP proxy%21s " % proxy)

        cj = http.cookiejar.CookieJar()
        opener = urllib.request.build_opener(
                    urllib.request.HTTPCookieProcessor(cj),
                    urllib.request.HTTPRedirectHandler(),
                    urllib.request.ProxyHandler({'http': proxy})
        )

        try:
            t1 = time.time()
            response = opener.open(test_url, timeout=timeout_value).read()
            tested += 1
            t2 = time.time()
        except Exception as e:
            log_msg += "%s " % fail_msg
            print(Fore.LIGHTRED_EX + log_msg)
            dead += 1
            tested += 1
            return None

        log_msg += ok_msg + "Response time: %d" % (int((t2-t1)*1000))
        print(Fore.LIGHTGREEN_EX + log_msg)
        text_file = open(out_filename, "a")
        text_file.write(proxy + "\r\n")
        text_file.close()
        alive += 1

        # ctypes.windll.kernel32.SetConsoleTitleW(f"Proxy Checker [HTTP(s)] | Total proxies Left: {input_queue.qsize()} | Tested: {tested} | Alive: {alive} | Dead: {dead}")
        return proxy

Однако, когда я делаю следующее, программа не заканчивается и застревает в конце, когда проверяется последний прокси-сервер.:

def process(self, task):
    global alive
    global dead
    global tested
    proxy = task
    log_msg = str("Trying HTTP proxy%21s " % proxy)

    cj = http.cookiejar.CookieJar()
    opener = urllib.request.build_opener(
                urllib.request.HTTPCookieProcessor(cj),
                urllib.request.HTTPRedirectHandler(),
                urllib.request.ProxyHandler({'http': proxy})
    )

    try:
        t1 = time.time()
        response = opener.open(test_url, timeout=timeout_value).read()
        tested += 1
        t2 = time.time()
    except Exception as e:
        log_msg += "%s " % fail_msg
        print(Fore.LIGHTRED_EX + log_msg)
        dead += 1
        tested += 1
        return None

    if "Connection working!" in response.decode('utf-8'):
        log_msg += ok_msg + "Response time: %d" % (int((t2-t1)*1000))
        print(Fore.LIGHTGREEN_EX + log_msg)
        text_file = open(out_filename, "a")
        text_file.write(proxy + "\r\n")
        text_file.close()
        alive += 1
        return proxy
    else:
        log_msg += "%s " % fail_msg
        print(Fore.LIGHTRED_EX + log_msg)
        dead += 1
        tested += 1
        return None

    # ctypes.windll.kernel32.SetConsoleTitleW(f"Proxy Checker [HTTP(s)] | Total proxies Left: {input_queue.qsize()} | Tested: {tested} | Alive: {alive} | Dead: {dead}")

Я не понимаю, почему первый код работает, а второй не работает. Я пытался найти решение несколько раз, но не могу добиться успеха.Полный рабочий код см. Здесь: https://hastebin.com/epunisagah.py

...