Как я могу запускать запросы или что-то подобное в многопроцессорности - PullRequest
0 голосов
/ 07 мая 2020

Я написал краулер с запросами (я использую сеанс, получение и отправку), но он медленно ... поэтому я хочу запустить эту программу в многопроцессорной обработке (например, 12 процессов). Но когда я его использую, он не работает, все выглядит нормально, но что-то не так, потому что он делает и публикует, а они ошибаются. Не знаю, это файлы cookie или что-то еще ...

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

Может быть, я могу сделать получить и опубликовать в другой библиотеке? Просто получить и опубликовать данные.

Спасибо за помощь

1 Ответ

0 голосов
/ 07 мая 2020

В зависимости от вашей Python версии, вы можете использовать асинхронные задачи и ожидать ответа при запуске других асинхронных запросов в фоновом режиме.

Но однажды я также сделал решение с многопроцессорностью, которое отправляло несколько запросов на сайт поиска рейсов для нескольких дат и нескольких направлений. Вот фрагмент кода:

from billiard.pool import Pool
import requests

def perform_request(i):
    destination, date = i
    url = 'https://api.skypicker.com/flights/'
    r = requests.get(url, params={"from": "MUC", "to": destination, "date": date})


def f(destinations, dates):
    for destination in destinations:
        for date in dates:
            yield (destination, date)

if __name__ == '__main__':
    destinations = [...]
    dates = [...]
    n_threads = 5

    pool = Pool(n_threads)
    iterable = f(destinations, dates)
    pool.map(perform_request, iterable)
...