Redis-py предоставя пул за връзки за вас, от който можете да извлечете връзка. Пуловите за връзки създават набор от връзки, които можете да използвате при необходимост (и когато е готово - връзката се връща в пула за връзки за по-нататъшна повторна употреба). Опитът да създадете връзки в движение, без да ги изхвърлите (т.е. да не използвате пул или да не използвате правилно пула) ще ви остави с твърде много връзки за редис (докато не достигнете лимита на връзката).
Можете да изберете да настроите пула за връзки в метода init и да го направите глобален (можете да разгледате други опции, ако не ви е удобно с глобалния).
redis_pool = None
def init():
global redis_pool
print("PID %d: initializing redis pool..." % os.getpid())
redis_pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)
След това можете да извлечете връзката от пул по следния начин:
redis_conn = redis.Redis(connection_pool=redis_pool)
Също така, предполагам, че използвате hiredis заедно с redis-py, тъй като това би трябвало да подобри производителността в определени случаи. Проверили ли сте също така броя на връзките, отворени към Redis сървъра с вашата съществуваща настройка, тъй като най-вероятно е доста висок? Можете да използвате командата INFO, за да получите тази информация:
redis-cli info
Проверете за Клиенти раздел, в който ще видите „connected_clients ", което ще ви каже колко връзки имате отворени към Redis сървъра в този момент.