我正在构建一个使用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()实例吗?
答案 0 :(得分:3)
这样的事情:
模块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