2014-10-02 2 views
1

Я создаю приложение, которое использует Redis как хранилище данных. Соответственно, у меня есть много функций, которые взаимодействуют с Redis, обычно как обертки для группы команд Redis.Как обрабатывать соединение Redis через несколько модулей?

Поскольку приложение растет после моего первоначального файла .py, я не понимаю, как обрабатывать соединение Redis через несколько модулей. В настоящее время мой указатель на соединение Redis объявлен в верхней части файла, и каждая функция предполагает, что он присутствует, а не передает его каждой функции. Если я распространю эти функции на несколько файлов, каждый модуль создаст свой собственный указатель Redis для использования, и каждый экземпляр приложения откроет несколько подключений к Redis.

Я бы хотел, чтобы один экземпляр просто использовал одно и то же соединение.

Я не хотите сделать это:

import redis 
class MyApp(object): 
    def __init__(self): 
     self.r = redis.Redis() 
    (all my app functions that touch redis go here) 

Я также не хочу, чтобы передать указатель Redis в качестве аргумента в каждой функции.

Есть ли какой-либо другой способ, я могу получить функции из разных модулей, чтобы поделиться одним экземпляром Redis()?

ответ

2

Что-то вроде этого:

Модуль redis_manager:

class RedisManager(object): 
    def __init__(): 
     # Connect to redis etc 
     self.redis = 12345 


redis_manager = RedisManager() 

Тогда в ваших других модулей, вы можете сделать:

from redis_manager import redis_manager 

redis_manager.redis.stuff 
+0

К сожалению, дух. Не думал о создании файла, который * просто * создает соединение, а затем импортирует указатель, а не класс. Благодаря! –

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