我正在构建一个使用 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)
Run Code Online (Sandbox Code Playgroud)
我也不想将 Redis 指针作为参数传递到每个函数中。
是否有其他方法可以从不同模块获取函数来共享单个 Redis() 实例?
像这样的东西:
模块redis_manager:
class RedisManager(object):
def __init__():
# Connect to redis etc
self.redis = 12345
redis_manager = RedisManager()
Run Code Online (Sandbox Code Playgroud)
然后在其他模块中,您可以执行以下操作:
from redis_manager import redis_manager
redis_manager.redis.stuff
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
985 次 |
| 最近记录: |