diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/daq/nginx-lua/s5-nginx-lua-fetch.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/daq/nginx-lua/s5-nginx-lua-fetch.py b/src/daq/nginx-lua/s5-nginx-lua-fetch.py new file mode 100755 index 0000000..ef13d02 --- /dev/null +++ b/src/daq/nginx-lua/s5-nginx-lua-fetch.py @@ -0,0 +1,85 @@ +#!/usr/bin/python +# +# sfive +# +# sfive - spreadspace streaming statistics suite is a generic +# statistic collection tool for streaming server infrastuctures. +# The system collects and stores meta data like number of views +# and throughput from a number of streaming servers and stores +# it in a global data store. +# The data acquisition is designed to be generic and extensible in +# order to support different streaming software. +# sfive also contains tools and applications to filter and visualize +# live and recorded data. +# +# +# Copyright (C) 2014 Christian Pointner <equinox@spreadspace.org> +# Markus Grueneis <gimpf@gimpf.org> +# +# This file is part of sfive. +# +# sfive is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 +# as published by the Free Software Foundation. +# +# sfive is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with sfive. If not, see <http://www.gnu.org/licenses/>. +# + +from twisted.internet import reactor +from twisted.internet.defer import Deferred +from twisted.internet.protocol import Protocol +from twisted.web.client import Agent +from twisted.web.http_headers import Headers + +import simplejson as json +import datetime + +class SFiveNGXluaProto(Protocol): + def __init__(self, finished): + self.data = '' + self.finished = finished + print 'Started receiving log data' + + def dataReceived(self, bytes): + self.data += bytes + lines = self.data.splitlines(True) + if len(lines) > 0: + if '\n' not in lines[-1] and '\r' not in lines[-1]: + self.data = lines[-1] + del lines[-1] + else: + self.data = '' + + if len(lines) > 0: + print '\nlog data received:' + for line in lines: + print json.loads(line) + + def connectionLost(self, reason): + print 'Finished receiving log data:', reason.getErrorMessage() + self.finished.callback(None) + +agent = Agent(reactor) +d = agent.request( + 'GET', + 'http://calypso.spreadspace.org/sfive', + Headers({'User-Agent': ['SFive nginx-lua fetcher']}), + None) + +def cbRequest(response): + finished = Deferred() + response.deliverBody(SFiveNGXluaProto(finished)) + return finished +d.addCallback(cbRequest) + +def cbShutdown(ignored): + reactor.stop() +d.addBoth(cbShutdown) + +reactor.run() |