我有一个处理获取和设置到redis集群的模块R.它被导入烧瓶api的端点。我的第一个想法是在R中使用Singleton类,以便我们保持与redis集群的单一连接,但我并不完全是我应该将单例类模式放入代码库中,该代码库每年只查看一次开发人员,我真的不希望有人试图在稍后阶段多次实例化它。
所以,相反,在我的模块 init .py中我设置了与集群的连接,并将此连接导入我的redis集群模块,然后我使用R,连接始终是相同的连接,而不必使用单身人士。
e.g:
_init _.py:
try:
RedisConnection = ConnectionMaker(...)
- [R 的.py:
from ...caching import RedisConnection
...
def set_cache():
RedisConnection.set(....)
some_endpoint.py
from ....caching import set_cache, ...
some_other_endpoint.py
from ....caching import set_cache, ...
我认为这是安全的,因为'Since Python modules are first-class runtime objects, they effectively become singletons, initialized at the time of first import.'。但是,有什么我想念的,有什么危险吗?
答案 0 :(得分:1)
这是安全的,但有两件事我认为不是好的做法。