Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2015 11:58:10

Suguby27
Зарегистрирован: 2015-04-07
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

django + redis

import redis
class RedisConnector():
     def __init__(self):
          self.cursor =  redis.Redis()
     def get_cursor(self):
          return self.cursor
connector = RedisConnector()

Потом в этом классе можно переделать что хочешь - пулы коннектов и прочее, интерфейс общения останется один.

использование
from my_redis_connector import connector
cursor = connector.get_cursor()

или вообще всё исполнение запросов выполнять в классе RedisConnector. что-то типа

from my_redis_connector import connector
data = connector.get_data_by_key(key='bla=bla-bla')

советую изучить ООП подход в программировании.

Офлайн

#2 Апрель 14, 2015 12:33:21

hound
Зарегистрирован: 2014-10-27
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

django + redis

Suguby27
если пойти дальше, то можно что-то тогда в таком духе сделать:

import redis
class RedisCursor(object):
    __instance = None
    def __new__(cls, val):
        if RedisCursor.__instance is None:
            self.cursor = redis.Redis()
        RedisCursor.__instance.val = val
        return RedisCursor.__instance

Взято из:
http://python-3-patterns-idioms-test.readthedocs.org/en/latest/Singleton.html

Хотя Ваш вариант компактнее.

Офлайн

#3 Апрель 14, 2015 12:51:07

Suguby27
Зарегистрирован: 2015-04-07
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

django + redis

Это пример синглетона, пока не надо лазить в мета-программирование, изучите обычные способы. А то будете ловить котов в мешке из-за переопределения “системных” вызовов (это я насчет __new__).
В моем примере обьект создается в модуле и оттуда юзатеся - так проще для понимания и сопровождения.

Офлайн

#4 Апрель 14, 2015 12:51:48

hound
Зарегистрирован: 2014-10-27
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

django + redis

Suguby27
Согласен. Благодарю за помощь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version