def _init_api(sched, responder, api_port, address): api = responder or RemoteSchedulerResponder(sched) api_app = app(api) api_sockets = tornado.netutil.bind_sockets(api_port, address=address) server = tornado.httpserver.HTTPServer(api_app) server.add_sockets(api_sockets) # Return the bound socket names. Useful for connecting client in test scenarios. return [s.getsockname() for s in api_sockets]
class RPCHandler(tornado.web.RequestHandler): """ Handle remote scheduling calls using rpc.RemoteSchedulerResponder""" scheduler = _create_scheduler() api = RemoteSchedulerResponder(scheduler) def get(self, method): payload = self.get_argument('data', default="{}") arguments = json.loads(payload) if hasattr(self.api, method): result = getattr(self.api, method)(**arguments) self.write({"response": result}) # wrap all json response in a dictionary else: self.send_error(400)