Такая вот суть. У меня есть список из 150 проксей
Мне нужно для каждой прокси запустить отдельный поток, в котором 18 раз в секунду кидается запрос на сервер
Я запускаю потоки:
proxy_threads_list = []
for x in s.proxy_data:
proxy_threads_list.append(Thread(target=start_parsing, args=(s.proxy_data[x], x)))
for k in proxy_threads_list:
k.start()
time.sleep(0.1)
После этого, в каждом потоке:
def start_parsing(auth, proxy):
utils.log(f'Bot start thread with proxy: {proxy}')
if proxy is None:
while True:
pool_list = []
pool = ThreadPool(processes=18)
for x in range(18):
pool_list.append(pool.apply_async(parser_f.get_binance_price, args=(None,)))
time.sleep(0.056)
else:
proxy_data = {"proxies": f'{proxy}:{auth["port"]}'}
while True:
pool_list = []
pool = ThreadPool(processes=18)
for x in range(18):
pool_list.append(pool.apply_async(parser_f.get_binance_price, args=(proxy_data,)))
time.sleep(0.056)
Так вот, если я запускаю всего в несколько проксей, то в целом все адекватно, но опять же, например с 10 проксями должно быть 180 запросов/сек, но проходит всего 40-60. Ладно, а с 150 проксями, производительность вообще не растет, поднимается всего до 70-100 запросов/сек.
Ответ от сервера идет в среднем 0,08-0,1с
В теории, должно на 150 проксей должно быть 2 700 запросов, но опять же, получается в 27 раз меньше