Mercurial > code > home > repos > light9
annotate bin/paintserver @ 1535:04f2e93f04e3
effecteval log startup error
Ignore-this: 6ab4a5a770c8557a2459072dde4ce17e
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Wed, 10 May 2017 07:13:27 +0000 |
parents | a30a73c12554 |
children | 0480fc790527 |
rev | line source |
---|---|
1521 | 1 #!bin/python |
2 | |
3 from __future__ import division | |
4 from run_local import log | |
5 import json | |
6 from twisted.internet import reactor | |
7 from light9.greplin_cyclone import StatsForCyclone | |
8 from light9.rdfdb.syncedgraph import SyncedGraph | |
9 from light9 import networking, showconfig | |
10 from greplin import scales | |
11 import optparse, sys, logging | |
12 import cyclone.web | |
13 from rdflib import URIRef | |
14 from light9.rdfdb import clientsession | |
15 import light9.paint.solve | |
16 from lib.cycloneerr import PrettyErrorHandler | |
17 | |
1522
69088fe2865e
more progress on paint
Drew Perttula <drewp@bigasterisk.com>
parents:
1521
diff
changeset
|
18 |
1521 | 19 class Solve(PrettyErrorHandler, cyclone.web.RequestHandler): |
20 def post(self): | |
21 painting = json.loads(self.request.body) | |
22 reload(light9.paint.solve) | |
1522
69088fe2865e
more progress on paint
Drew Perttula <drewp@bigasterisk.com>
parents:
1521
diff
changeset
|
23 solver = light9.paint.solve.Solver(self.settings.graph) |
69088fe2865e
more progress on paint
Drew Perttula <drewp@bigasterisk.com>
parents:
1521
diff
changeset
|
24 solver.loadSamples() |
1521 | 25 with self.settings.stats.solve.time(): |
1522
69088fe2865e
more progress on paint
Drew Perttula <drewp@bigasterisk.com>
parents:
1521
diff
changeset
|
26 out = solver.solve(painting) |
1524
a30a73c12554
more code and testing in solve & sim
Drew Perttula <drewp@bigasterisk.com>
parents:
1522
diff
changeset
|
27 layers = solver.simulationLayers(out) |
a30a73c12554
more code and testing in solve & sim
Drew Perttula <drewp@bigasterisk.com>
parents:
1522
diff
changeset
|
28 self.write(json.dumps({'layers': layers, 'out': out})) |
1521 | 29 |
30 class App(object): | |
31 def __init__(self, show, session): | |
32 self.show = show | |
33 self.session = session | |
34 | |
35 self.graph = SyncedGraph(networking.rdfdb.url, "paintServer") | |
36 self.graph.initiallySynced.addCallback(self.launch) | |
37 | |
38 self.stats = scales.collection('/', | |
39 scales.PmfStat('solve'), | |
40 ) | |
41 def launch(self, *args): | |
42 self.cycloneApp = cyclone.web.Application(handlers=[ | |
43 (r'/stats', StatsForCyclone), | |
44 (r'/solve', Solve), | |
45 ], | |
46 debug=True, | |
47 graph=self.graph, | |
48 stats=self.stats) | |
49 reactor.listenTCP(networking.paintServer.port, self.cycloneApp) | |
50 log.info("listening on %s" % networking.paintServer.port) | |
51 | |
52 | |
53 if __name__ == "__main__": | |
54 parser = optparse.OptionParser() | |
55 parser.add_option('--show', | |
56 help='show URI, like http://light9.bigasterisk.com/show/dance2008', | |
57 default=showconfig.showUri()) | |
58 parser.add_option("-v", "--verbose", action="store_true", | |
59 help="logging.DEBUG") | |
60 parser.add_option("--twistedlog", action="store_true", | |
61 help="twisted logging") | |
62 clientsession.add_option(parser) | |
63 (options, args) = parser.parse_args() | |
64 log.setLevel(logging.DEBUG if options.verbose else logging.INFO) | |
65 | |
66 if not options.show: | |
67 raise ValueError("missing --show http://...") | |
68 | |
69 session = clientsession.getUri('paint', options) | |
70 | |
71 app = App(URIRef(options.show), session) | |
72 if options.twistedlog: | |
73 from twisted.python import log as twlog | |
74 twlog.startLogging(sys.stderr) | |
75 reactor.run() |