summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--memcache.py24
2 files changed, 27 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index bc913b1..e59d5f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,9 @@ Thu, 02 Apr 2009 13:37:49 -0600 Sean Reifschneider <jafo@tummy.com>
* Providing better error messages (patch provided by Johan Euphrosine).
+ * Adding get_slabs() function to get stats. (Patch provided
+ by Nick Verbeck)
+
Sun, 01 Jun 2008 15:05:11 -0600 Sean Reifschneider <jafo@tummy.com>
* Version 1.43
diff --git a/memcache.py b/memcache.py
index 3e0a789..c5fcb45 100644
--- a/memcache.py
+++ b/memcache.py
@@ -213,6 +213,30 @@ class Client(local):
return(data)
+ def get_slabs(self):
+ data = []
+ for s in self.servers:
+ if not s.connect(): continue
+ if s.family == socket.AF_INET:
+ name = '%s:%s (%s)' % ( s.ip, s.port, s.weight )
+ else:
+ name = 'unix:%s (%s)' % ( s.address, s.weight )
+ serverData = {}
+ data.append(( name, serverData ))
+ s.send_cmd('stats items')
+ readline = s.readline
+ while 1:
+ line = readline()
+ if not line or line.strip() == 'END': break
+ item = line.split(' ', 2)
+ #0 = STAT, 1 = ITEM, 2 = Value
+ slab = item[1].split(':', 2)
+ #0 = items, 1 = Slab #, 2 = Name
+ if not serverData.has_key(slab[1]):
+ serverData[slab[1]] = {}
+ serverData[slab[1]][slab[2]] = item[2]
+ return data
+
def flush_all(self):
'Expire all data currently in the memcache servers.'
for s in self.servers: