Добрый день. Столкнулся с проблемой, гуглил, но не нашел решения именно моей проблемы.
Нужно написать скрипт так, чтобы он делал запросы каждый определенный промежуток времени и потом когда придет ответ добавлял ответ запроса в массив. Допустим у меня 10 сессий. И нужный промежуток времени между запросами мне: 0,2 секунды. Значит мне нужно чтобы 1 из сессий отправляла запрос раз в 0,2 секунды(Если ответ не поступил, а 0,2 секунды уже прошло, начинался новый запрос другой сессии, но ответ в этом потоке еще ожидался). И в результате чтобы скрипт отправлял 10 запросов за 2 секунды с разных сессий и потом цикл начинался заново
Прочитал вот здесь:
Python многопоточность Requests, что блокирует обработку?, но как я понял опять же здесь пока не придет ответ на запрос, не начнется новый запрос.
Попробовал вот так:
def multi_parse(self):
self.ticker = 1
self.parse_info = []
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.map(self.thread_parse, self.multisession)
def thread_parse(self, session):
print(f'Делаю запрос #{self.ticker} {t.time()}')
thread_local.session = session
multi_session = thread_local.session
req = multi_session.get("", timeout=5).json()
self.parse_info.append(req)
t.sleep(0.2)
print(f'Завершил запрос #{self.ticker}')
self.ticker += 1
Но тут все запросы отправляются в одно время.