2014-10-02 68 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

哎呀,真不錯。沒有考慮創建一個只創建連接然後導入指針而不是類的文件。謝謝! – 2014-10-02 23:30:52