Нет адаптеров подключения с помощью ThreadPool - PullRequest
0 голосов
/ 30 сентября 2019

Я запускаю ThreadPool через список URL в настоящее время в CSV. Когда код запускается, он возвращает ошибку, опубликованную ниже:

InvalidSchema: No connection adapters were found for '['http://axiomglobal.sharepoint.com/sites/MarkandElena-Strategic']'

Похоже, что python смотрит на скобки как часть URL, но сам список, кажется, пропускает их:

[['http://axiomglobal.sharepoint.com/sites/123456'], ['http://axiomglobal.sharepoint.com/sites/SharePointo365globaltestsite'], ['http:3456789']

Есть ли в приведенном ниже коде что-то, что заставляет его искать сайты в списке с включенными скобками?

Я пытался использовать один URL-адрес для части кода ThreadLoop,а не весь список, и он генерирует правильный результат.

def get_site_status(site):
    try:
        response = requests.get(site)
    except requests.exceptions.ConnectionError:
        print('Connection Refused')
        return 1
    if response.status_code == 401:
        print('web site exists, permission needed')
    elif response.status_code == 404:
        print('web site does not exist')
    elif response.status_code == 400:
        print('web site does not exist')
    elif response.status_code == 403:
        print('web site forbidden')
    elif response.status_code == 423:
        print('web site locked')
    elif response.status_code == 200:
        print('web site exists and is available')
    else:
        print('other')
    return 0
pool = ThreadPool(processes=1)
​
results = pool.map_async(get_site_status, Row_list)
​
print('Results: {}'.format(results.get()))

Я ожидаю, что код будет заполнять список каждой строки с его результатом из части кода ThreadPool (приблизительно 1500 строк URL).

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Понял проблему, я использовал список в списке ранее в коде, который заставил цикл искать '[url]' вместо 'url'

0 голосов
/ 01 октября 2019

gevent намного быстрее с запросами. Вы неправильно фиксируете ошибки или передаете их в виде сертификата SSL в случае обновления.

from gevent import monkey, spawn, joinall
monkey.patch_all()
import requests, certifi
from time import time
t0 = time()
Row_list = ['http://axiomglobal.sharepoint.com/sites/123456', 'http://axiomglobal.sharepoint.com/sites/SharePointo365globaltestsite', 'http:3456789', 'https://www.yahoo.com']
def get_site_status(site):
    try:
        response = requests.get(site, verify=certifi.where())
        status = response.status_code
    except:
        print('Connection Refused')
        return False
    if status == 401:
        print('web site exists, permission needed')
    elif status == 404:
        print('web site does not exist')
    elif status == 400:
        print('web site does not exist')
    elif status == 403:
        print('web site forbidden')
    elif status == 423:
        print('web site locked')
    elif status == 200:
        print('web site exists and is available')
    else:
        print('other')
    return True
threads = []
for row in Row_list:
    threads.append(spawn(get_site_status, row))
joinall(threads)

for thread in threads:
    print thread.value

print time() - t0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...