Приветствую всех.
Есть класс, назовем его
Caller. Он является частью модуля и осуществляет запросы по HTTP. Каждый
instance класса может осуществлять одно действие за раз.
То есть:
client = Caller(API_KEY, API_SECRET, bla-bla)
То есть один клиент - это будет один
instance класса
Caller.
Допустим я хочу, чтобы эта функция выполнялась в N потоков. Допустим их будет 10. Окей, создаем 10
instance и работаем в 10 потоков. Все работает. Но, предположим, что потоков 10, а действий которые нужно будет совершить - 20. Значит каждый
instance проработает два раза. И тут незадача - нужно заблокировать следующие потоки, пока предыдущие не будут выполнены. Неизвестно, какой
instance освободился и какому давать следующее задание.
Если ничего не блокировать, имеем определенную ошибку
SSL сертификата, которая обычно означает, что соединение уже занято.
Собственно, можно это все "накостылять" через
открытые/закрытые instance, но я думаю, что есть решение изящнее и правильнее.
Пытался сделать так, блокировка не происходит (функция
chunks делит все потоки на определенные части по количеству существующих instance):