[Tutor] Dictionaries and aggregation
Paul Churchill
paul.churchill at cyanfusion.com
Tue Apr 25 01:06:35 CEST 2006
I am trying to create a dictionary using data produced by a load balancing
admin tool and aggregate the results.
When I invoke the tool from within the shell ('sudo ~/ZLBbalctl
--action=cells') the following output is produced:
Load Balancer 1 usage, over the last 30 seconds
Port 80, rules - /(nol)|(ws)
server001 alive 18.1% 2 requests/s 14536543 total
server002 alive 43.1% 7 requests/s 14842618 total
server003 alive 21.2% 2 requests/s 14884487 total
server004 alive 17.3% 2 requests/s 15092053 total
Load Balancer 2 usage, over the last 30 seconds
Port 80, rules - /(nol)|(ws)
server001 alive 11.6% 2 requests/s 14482578 total
server002 alive 35.6% 9 requests/s 14820991 total
server003 alive 28.7% 6 requests/s 14928991 total
server004 alive 23.7% 5 requests/s 15147525 total
I have managed to get something close to what I'm looking for using lists
i.e. the aggregate of the fourth column (requests/s)
lbstat = commands.getoutput("sudo ~/ZLBbalctl --action=cells | awk '$1 ~
/^server00/ { print $4 }'")
rLst = lbstat.split('\n')
rLst = [ int(rLst[i]) for i in range(len(rLst)) ]
rTotal = reduce(operator.add, rLst)
However here's what I'm now trying to do:
1) Not have to rely on using awk at all.
2) Create a dictionary with server names for keys e.g. server001,
server002 etc and the aggregate of the request for that server as the value
part of the pairing.
I got this far with part 1)
lbstat = commands.getoutput("sudo ~/ZLBbalctl --action=cells")
tmpLst = lbstat.split('\n')
rLst = []
for i in tmpLst:
m = re.search(' server[0-9]+', i)
if m:
rLst.append(i)
for i in rLst:
print i, type(i)
server001 alive 22.3% 6 requests/s 14527762 total <type 'str'>
server002 alive 23.5% 7 requests/s 14833265 total <type 'str'>
server003 alive 38.2% 14 requests/s 14872750 total <type 'str'>
server004 alive 15.6% 4 requests/s 15083443 total <type 'str'>
server001 alive 24.1% 8 requests/s 14473672 total <type 'str'>
server002 alive 23.2% 7 requests/s 14810866 total <type 'str'>
server003 alive 30.2% 8 requests/s 14918322 total <type 'str'>
server004 alive 22.1% 6 requests/s 15137847 total <type 'str'>
At this point I ran out of ideas and began to think that there must be
something fundamentally wrong with my approach. Not least of my concerns was
the fact that I needed integers and these were strings.
Any help would be much appreciated.
Regards,
Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20060425/9c5b85dd/attachment.html
More information about the Tutor
mailing list