[root@fast-node-652 ceph]# python ../pkg/redisbase.py
Traceback (most recent call last):
File "../pkg/redisbase.py", line 85, in redis_hget
values = self.pipe.execute()
File "/usr/lib/python2.7/site-packages/redis/client.py", line 2578, in execute
return execute(conn, stack, raise_on_error)
File "/usr/lib/python2.7/site-packages/redis/client.py", line 2470, in _execute_transaction
response = self.parse_response(connection, '_')
File "/usr/lib/python2.7/site-packages/redis/client.py", line 2536, in parse_response
self, connection, command_name, **options)
File "/usr/lib/python2.7/site-packages/redis/client.py", line 577, in parse_response
response = connection.read_response()
File "/usr/lib/python2.7/site-packages/redis/connection.py", line 574, in read_response
raise response
ResponseError: handle request, command 'EXEC' is not allowed
m6
[root@fast-node-652 ceph]# python ../pkg/redisbase.py
Traceback (most recent call last):
File "../pkg/redisbase.py", line 85, in redis_hget
values = self.pipe.execute()
File "/usr/lib/python2.7/site-packages/redis/client.py", line 2578, in execute
return execute(conn, stack, raise_on_error)
File "/usr/lib/python2.7/site-packages/redis/client.py", line 2470, in _execute_transaction
response = self.parse_response(connection, '_')
File "/usr/lib/python2.7/site-packages/redis/client.py", line 2536, in parse_response
self, connection, command_name, **options)
File "/usr/lib/python2.7/site-packages/redis/client.py", line 577, in parse_response
response = connection.read_response()
File "/usr/lib/python2.7/site-packages/redis/connection.py", line 574, in read_response
raise response
ResponseError: handle request, command 'EXEC' is not allowed
解决办法:
self.pipe = self.conn.pipeline(transaction=False)
整行代码上贴
#!/usr/bin/env python
#-*-coding:UTF-8-*-
"""
@Item : cheetah v1.0
@Author : william
@Group : XXX XXX
@Date : 2017-03-15
@E-mail :
@Funtion:
redis_set : Redis in the form of pipe insert data, json hash as a string print
redis_get : Redis inprintion, and json string into the original print
"""
import sys,os,time,redis,traceback,json
sys.path.append("/data/cheetah/")
reload(sys)
sys.setdefaultencoding("utf8")
from pkg import log
from pkg import config
LOG = log.get_logger(__name__)
cfg = config
RedisCONF = cfg.load_cfg()["redis"]
class RedisBase(object):
''' Establish redis session connection pool '''
def __init__ (self):
self.host = RedisCONF['host']
self.port = RedisCONF['port']
self.db = RedisCONF['db']
try:
pool = redis.ConnectionPool(host = self.host, port = self.port, db = self.db)
self.conn = redis.Redis(connection_pool=pool)
self.pipe = self.conn.pipeline(transaction=False)
except:
LOG.error(traceback.print_exc())
return traceback.print_exc()
def redis_set(self,keys=None ,values=None):
''' Insert redis databases,keys = key ,values = value'''
try:
self.pipe.set(keys,json.dumps(values))
self.pipe.execute()
except:
LOG.error(traceback.print_exc())
return traceback.print_exc()
#add by william, for hash set
def redis_hset(self,field, key,values ):
'''insert redis key, field ,values'''
try:
self.pipe.hset(field,key, json.dumps(values))
self.pipe.execute()
except:
LOG.error(traceback.print_exc())
return traceback.print_exc()
#add by william, for hash set and add expire
def redis_set_expire(self, key,values ):
'''insert redis key, field ,values'''
try:
self.pipe.set(key,json.dumps(values))
self.pipe.expire(key,604800)
self.pipe.execute()
except:
LOG.error(traceback.print_exc())
return traceback.print_exc()
#add by william, get from hash
def redis_hget(self, key, field = None):
'''get by key, return the dict'''
try:
fields = []
if field:
fields.append(field)
else:
fields = self.conn.hkeys(key)
for f in fields:
self.pipe.hget(key, f)
values = self.pipe.execute()
values = [json.loads(i) for i in values]
return dict(zip(fields, values))
except:
print traceback.format_exc()
return key
def redis_get(self,argv):
''' Getting single KYES values ,argv : is keys'''
try:
self.pipe.get(argv)
return json.loads( self.pipe.execute()[0])
except:
LOG.error(traceback.print_exc())
return traceback.print_exc()
def redis_getkeys(self):
''' Getting all keys '''
try:
self.pipe.keys('*')
return self.pipe.execute()[0]
except:
LOG.error(traceback.print_exc())
return traceback.print_exc()
def redis_delete(self,keys):
try:
self.pipe.delete(keys)
self.pipe.execute()
return 'Delete True'
except:
LOG.error(traceback.print_exc())
return 'Delete False'
if __name__ == "__main__":
sc = RedisBase()
bs = sc.redis_hget('m6')
for x,y in bs.items():
for a,b in y.items():
if a == 'ceph_df':
print b