python 關閉redis連接

python讀寫redis時,到底需不需要關閉redis連接池連接?

import redis

def RedisUtils():
    pool = redis.ConnectionPool(host='172.8.10.145', port=6379, password="xxxxxx", decode_responses=True)
    r = redis.Redis(connection_pool=pool)
    return r

 一般說法:如果使用連接池就不需要關閉。當我們用Redis和StrictRedis創建連接時,其實內部實現並沒有主動給我創建一個連接,我們獲得的連接是連接池提供的連接,這個連接由連接池管理,所以我們無需關注連接是否需要主動釋放的問題。另外連接池有自己的關閉連接的接口,一旦調用該接口,所有連接都將被關閉。

但是實際storm項目使用當中報以下錯誤:

ConnectionError: max number of clients reached

超過最大連接數,說明連接沒有關閉,因此調用基礎連接池的disconnect方法關閉連接:

if __name__=="__main__":
    r = RedisUtils() 
    r.connection_pool.disconnect()

ConnectionPool.disconnect()實際上關閉了從該連接池打開的所有連接。但是,它不會阻止打開新連接。

參考資料:https://github.com/andymccurdy/redis-py/issues/681

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章