2013-03-13 2 views
7

Каков наилучший образец для обработки соединений Redis (как для взаимодействия с Redis прямо и косвенно через Python-RQ)?Как правильно обрабатывать соединения Redis с Python/Python RQ?

Как правило, соединения базы данных должны быть закрыты/возвращены в пул по завершении, но я не вижу, как это сделать с помощью redis-py. Это заставляет меня задаться вопросом, не делаю ли я это неправильно.

Кроме того, я видел некоторые провалы производительности при вводе заданий в RQ, которые, как мне сказали, могут относиться к плохому использованию/повторному использованию соединения.

В принципе, мне интересно узнать правильный шаблон, поэтому я могу либо проверить, либо исправить то, что у нас есть в нашем приложении.

Большое спасибо! Если есть больше информации, которая была бы полезной, сообщите мне.

ответ

4

За кулисами redis-py использует пул соединений для управления соединениями с сервером Redis. По умолчанию каждый созданный вами экземпляр Redis будет создавать собственный пул подключений. Вы можете переопределить это поведение и использовать существующий пул соединений, передав уже созданный экземпляр пула подключений аргументу connection_pool класса Redis. Вы можете сделать это для того, чтобы внедрить накладку на стороне клиента или иметь более точное управление зерном, как управление соединениями.

pool = redis.ConnectionPool(host='localhost', port=6379, db=0) 
r = redis.Redis(connection_pool=pool) 
+0

Отлично! Однако мне все еще не очень понятно, если соединения, возвращаемые этим пулом соединений, должны быть закрыты в любой момент или если они обрабатываются автоматически. Есть идеи? –

+0

я не делал никаких закрытий соединений и не читал об этом, и пока не вижу никаких проблем с производительностью. Возможно, есть правильный способ обработки соединений – mmenafra

Смежные вопросы