mark一下,明天想辦法解決。。
ps:最終發(fā)現(xiàn)mongo連接失敗是密碼沒(méi)有設(shè)置導(dǎo)致(居然是因?yàn)榘丫€上配置看成線下配置了。。)
對(duì)于第一種錯(cuò)誤,公司最近線上出現(xiàn)問(wèn)題,正好遇到這樣的錯(cuò)誤,主要原因是sentinel沒(méi)啟動(dòng)起來(lái);不過(guò)這其中的過(guò)程有些坑爹,公司有3臺(tái)redis sentinel機(jī)器,其中的一臺(tái)機(jī)器宕機(jī)以后,另外兩臺(tái)機(jī)器始終無(wú)法選舉出一臺(tái)作為主,因?yàn)椴恢滥奈慌R時(shí)工在做redis配置的時(shí)候把選舉機(jī)器的配置為3,導(dǎo)致只要宕掉一臺(tái)就無(wú)法選舉出來(lái)。實(shí)際上應(yīng)該是把配置改為n-m, n為機(jī)器數(shù),m為允許宕掉的機(jī)器數(shù)。
附上redis的代碼如下:
import redis import ConfigParser import redis.sentinel class RedisConn: _rp = None def __init__(self): cp = ConfigParser.SafeConfigParser() cp.read('avatar_redis.conf') host = cp.get('redis', 'host') port = cp.get('redis', 'port') db_name = cp.get('redis', 'dbName') pass_word = cp.get('redis', 'passWord') self._rp = redis.StrictRedis(host=host, port=port, db=0, password=pass_word) # = redis.ConnectionPool(host=host, port=port, db=0, password='') #sentinel = redis.sentinel.Sentinel([(host, port)], socket_timeout=0.1) #self._rp = sentinel.master_for(db_name, socket_timeout=0.1) #self._rp = redis.Redis(connection_pool=conn_pool) def get_conn(self): return self._rp def set_value(self, key, value): self._rp.set(key, value) def get_value(self, key): return self._rp.get(key)
更多python訪問(wèn)redis的問(wèn)題 相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com