Mercurial > code > home > repos > light9
view bin/effectsequencer @ 1926:1a7e5b07bf17
use my greplin fork's stats/ code instead of an old local one
Ignore-this: f0935bd61f0b982e544c1991e14fb51e
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Sun, 02 Jun 2019 00:05:12 +0000 |
parents | 91bcc6c76934 |
children | 4718ca6f812e |
line wrap: on
line source
#!bin/python """ plays back effect notes from the timeline """ from run_local import log from twisted.internet import reactor from greplin.scales.cyclonehandler import StatsHandler from rdfdb.syncedgraph import SyncedGraph from light9 import networking, showconfig from greplin import scales import optparse, sys, logging import cyclone.web from rdflib import URIRef from light9.effect.sequencer import Sequencer, Updates from light9.collector.collector_client import sendToCollector from light9 import clientsession class App(object): def __init__(self, show, session): self.show = show self.session = session self.graph = SyncedGraph(networking.rdfdb.url, "effectSequencer") self.graph.initiallySynced.addCallback(self.launch) self.stats = scales.collection( '/', scales.PmfStat('sendLevels'), scales.PmfStat('getMusic'), scales.PmfStat('evals'), scales.PmfStat('sendOutput'), scales.IntStat('errors'), ) def launch(self, *args): self.seq = Sequencer( self.graph, lambda settings: sendToCollector( 'effectSequencer', self.session, settings, # This seems to be safe here (and lets us get from # 20fpx to 40fpx), even though it leads to big stalls # if I use it on KC. useZmq=True)) self.cycloneApp = cyclone.web.Application(handlers=[ (r'/()', cyclone.web.StaticFileHandler, { "path": "light9/effect/", "default_filename": "sequencer.html" }), (r'/updates', Updates), (r'/stats/(.*)', StatsHandler, { 'serverName': 'effectsequencer' }), ], debug=True, seq=self.seq, graph=self.graph, stats=self.stats) reactor.listenTCP(networking.effectSequencer.port, self.cycloneApp) log.info("listening on %s" % networking.effectSequencer.port) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option( '--show', help='show URI, like http://light9.bigasterisk.com/show/dance2008', default=showconfig.showUri()) parser.add_option("-v", "--verbose", action="store_true", help="logging.DEBUG") parser.add_option("--twistedlog", action="store_true", help="twisted logging") clientsession.add_option(parser) (options, args) = parser.parse_args() log.setLevel(logging.DEBUG if options.verbose else logging.INFO) if not options.show: raise ValueError("missing --show http://...") session = clientsession.getUri('effectSequencer', options) app = App(URIRef(options.show), session) if options.twistedlog: from twisted.python import log as twlog twlog.startLogging(sys.stderr) reactor.run()