Python запросы с многопоточностью

Последние два дня я пытался создать скребок с поддержкой многопоточности. Каким-то образом я все еще не мог справиться с этим. Сначала я попробовал обычный многопоточный подход с модулем потоков, но это было не быстрее, чем использование одного потока. Позже я узнал, что запросы блокируют, а многопоточный подход на самом деле не работает. Так что я продолжал исследовать и узнавал о гречах и гентах. Сейчас я запускаю тесты с Gevent, и это все еще не быстрее, чем использование одного потока. Мое кодирование неверно?

Вот соответствующая часть моего класса:

import gevent.monkey
from gevent.pool import Pool
import requests

gevent.monkey.patch_all()

class Test:
    def __init__(self):
        self.session = requests.Session()
        self.pool = Pool(20)
        self.urls = [...urls...]

    def fetch(self, url):

        try:
            response = self.session.get(url, headers=self.headers)
        except:
            self.logger.error('Problem: ', id, exc_info=True)

        self.doSomething(response)

    def async(self):
        for url in self.urls:
            self.pool.spawn( self.fetch, url )

        self.pool.join()

test = Test()
test.async()

Ответы на вопрос(0)

Ваш ответ на вопрос