[英]Is this python pattern for a singleton safe?
我有一個模塊R來處理獲取和設置到Redis集群。 它會在Flask API的所有端點上導入。 我的第一個想法是在R中使用Singleton類,以便我們保持與Redis集群的單個連接,但是我不完全應該將Singleton類模式放入每年僅一次由不同人員查看的代碼庫中。開發人員,我真的不希望有人在以后的階段嘗試多次實例化它。
因此,相反,在模塊init .py中,我建立了到集群的連接,並將此連接導入到我的redis集群模塊中,然后無論我使用R為何,該連接始終是相同的連接,而不必使用單例。
例如:
_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, ...
我認為這是安全的,因為' 由於Python模塊是一流的運行時對象,因此它們實際上成為單例,並在首次導入時進行了初始化。 '。 但是,我有什么想念的,有危險的嗎?
這是安全的,但有兩點我認為不是好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.