rastreador multiproceso mientras se usa el proxy tor

Estoy tratando de construir un rastreador de subprocesos múltiples que usa proxies tor: estoy usando lo siguiente para establecer la conexión tor:

from stem import Signal
from stem.control import Controller
controller = Controller.from_port(port=9151)
def connectTor():
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9150)
    socket.socket = socks.socksocket


def renew_tor():
    global request_headers
    request_headers = {
        "Accept-Language": "en-US,en;q=0.5",
        "User-Agent": random.choice(BROWSERS),
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Referer": "http://thewebsite2.com",
        "Connection": "close"
    }

    controller.authenticate()
    controller.signal(Signal.NEWNYM)

Aquí está el buscador de URL:

def get_soup(url):
    while True:
        try:
            connectTor()
            r = requests.Session()
            response = r.get(url, headers=request_headers)
            the_page = response.content.decode('utf-8',errors='ignore')
            the_soup = BeautifulSoup(the_page, 'html.parser')
            if "captcha" in the_page.lower():
                print("flag condition matched while url: ", url)
                #print(the_page)
                renew_tor()
            else:
                return the_soup
                break
        except Exception as e:
            print ("Error while URL :", url, str(e))

Luego estoy creando un trabajo de búsqueda multiproceso:

with futures.ThreadPoolExecutor(200) as executor:
            for url in zurls:
                future = executor.submit(fetchjob,url)

entonces recibo el siguiente error, que no veo cuando uso multiprocesamiento:

 Socket connection failed (Socket error: 0x01: General SOCKS server failure)

Agradecería cualquier consejo para evitar errores de calcetines y mejorar el rendimiento del método de rastreo para que sea multiproceso.

Respuestas a la pregunta(1)

Su respuesta a la pregunta