async def run(self): while True: try: self.lastTemp = await asyncio.get_event_loop().run_in_executor(None, self.readTemp) + self.offset notify(Event(source=self.name, endpoint='temperature', data=self.lastTemp)) except RuntimeError as e: logger.debug(str(e)) await asyncio.sleep(self.pollInterval)
async def post_handler(self, request): try: data = await request.json() self.last_temperature = data['temperature'] for key, value in data.items(): notify(Event(source=self.name, endpoint=key, data=value)) return web.Response(text="Thank you") except json.JSONDecodeError as e: logger.warning('Malformed JSON received from iSpindel %s: %s' % (self.name, str(e))) raise web.HTTPBadRequest(reason='Malformed JSON %s' % str(e))
async def run(self): while True: (temp, gravity) = await asyncio.get_event_loop().run_in_executor( None, self.monitor_tilt) self.lastTemp = temp notify(Event(source=self.name, endpoint='temperature', data=temp)) notify( Event(source=self.name, endpoint='gravity', data=gravity / 1000.0)) notify( Event(source=self.name, endpoint='brix', data=to_brix(gravity / 1000.0)))
def main(): global server_p # parsing arguments (opts, args) = args_parse() in_q = Queue() out_q = Queue() logger.info('running dv.py') # start agent server #loop = asyncio.get_event_loop() server_p = Process(target=start_agent_server, args=( in_q, out_q, path.abspath(opts.out_dir), opts.verbose, )) #server_p = Thread(target=start_agent_server, args=(loop, in_q, out_q,)) server_p.start() try: # waiting for server started host, port = in_q.get() #logger.info("agent server started on {}:{}".format(host, port)) # set gcf engine if opts.gcf == 'local': GCFEngine.set_imp( Local(host, port, path.abspath(opts.out_dir), opts.verbose)) else: if opts.gcf == 'lsf': GCFEngine.set_imp( LSF(host, port, path.abspath(opts.out_dir), opts.verbose)) else: raise Exception('unsupported gcf engine {}'.format(opts.gcf)) # config job engine JobEngine.connect(in_q, out_q) JobEngine.out_dir = path.abspath(opts.out_dir) logger.info('max agents = {}'.format(opts.max_agents)) JobEngine.max_cmds = opts.max_agents # load files require('loader') if opts.patchfile: for f in opts.patchfile: require(f) # evaluate experssions @visitor def top(): @join def body(self): if opts.expr: for e in opts.expr: @spawn(self) def body(ee=e): res = eval(ee, get_ns(), get_ns()) if type(res) == GeneratorType: yield from res return res if opts.test: @spawn(self) def body(): res = run_test(*opts.test, action=opts.action, where=opts.where) if type(res) == GeneratorType: yield from res return res yield from body() # run while True: JobEngine.run() Scheduler.run() if JobEngine.is_waiting() or Scheduler.is_waiting(): next else: break for t in Test.test_status: if Test.test_status[t] == 'passed': logger.info("*** test '{}' passed".format(t)) else: logger.error("*** test '{}' failed".format(t)) if top.exception: def print_exception(e, indent=0): if isinstance(e, Exception): for l in extract_tb(e.__traceback__): logger.debug((" " * indent) + str(l)) if not isinstance(e, Exception): logger.error((" " * indent) + str(e)) return for i in e.args: if not isinstance(i, list): i = [i] for j in i: print_exception(j, indent + 2) print_exception(top.exception) logger.error('dv.py failed') #raise top.exception else: logger.info('dv.py passed') finally: event.notify('dvpy_done') cleanup()
def writeRequest(self, pin, params): notify( Event(source=self.name, endpoint='v%d' % pin, data=float(params.pop(0))))
def enabled(self, state): self._enabled = state if not self._enabled: self.actor.updatePower(0.0) event.notify(event.Event(source=self.name, endpoint='enabled', data=self.enabled))
def setSetpoint(self, setpoint): self.targetTemp = setpoint event.notify(event.Event(source=self.name, endpoint='setpoint', data=self.targetTemp))
async def handler(self, name, request): stuff = await request.json() notify(Event(source=self.name, endpoint=name, data=stuff)) return web.json_response(stuff)
def updatePower(self, power): self.power = power notify(Event(source=self.name, endpoint='power', data=self.power)) logger.debug("%s: Setting power to %f" % (self.name, self.power))
def updatePower(self, power): self.power = power notify(Event(source=self.name, endpoint='power', data=power))
async def readTemp(self): await asyncio.sleep(2) temp = normalvariate(self.fakeTemp, 0.5) notify(Event(source=self.name, endpoint='temperature', data=temp)) return temp
def updatePower(self, power): self.power = power self.p.ChangeDutyCycle(self.power) notify(Event(source=self.name, endpoint='power', data=power))
def main(): global server_p # parsing arguments (opts, args) = args_parse() in_q = Queue() out_q = Queue() logger.info('running dv.py') # start agent server #loop = asyncio.get_event_loop() server_p = Process(target=start_agent_server, args=(in_q, out_q, path.abspath(opts.out_dir), opts.verbose,)) #server_p = Thread(target=start_agent_server, args=(loop, in_q, out_q,)) server_p.start() try: # waiting for server started host, port = in_q.get() #logger.info("agent server started on {}:{}".format(host, port)) # set gcf engine if opts.gcf == 'local': GCFEngine.set_imp(Local(host, port, path.abspath(opts.out_dir), opts.verbose)) else: if opts.gcf == 'lsf': GCFEngine.set_imp(LSF(host, port, path.abspath(opts.out_dir), opts.verbose)) else: raise Exception('unsupported gcf engine {}'.format(opts.gcf)) # config job engine JobEngine.connect(in_q, out_q) JobEngine.out_dir = path.abspath(opts.out_dir) logger.info('max agents = {}'.format(opts.max_agents)) JobEngine.max_cmds = opts.max_agents # load files require('loader') if opts.patchfile: for f in opts.patchfile: require(f) # evaluate experssions @visitor def top(): @join def body(self): if opts.expr: for e in opts.expr: @spawn(self) def body(ee=e): res = eval(ee, get_ns(), get_ns()) if type(res) == GeneratorType: yield from res return res if opts.test: @spawn(self) def body(): res = run_test(*opts.test, action=opts.action, where=opts.where) if type(res) == GeneratorType: yield from res return res yield from body() # run while True: JobEngine.run() Scheduler.run() if JobEngine.is_waiting() or Scheduler.is_waiting(): next else: break for t in Test.test_status: if Test.test_status[t] == 'passed': logger.info("*** test '{}' passed".format(t)) else: logger.error("*** test '{}' failed".format(t)) if top.exception: def print_exception(e, indent=0): if isinstance(e, Exception): for l in extract_tb(e.__traceback__): logger.debug((" "*indent)+str(l)) if not isinstance(e, Exception): logger.error((" "*indent)+str(e)) return for i in e.args: if not isinstance(i, list): i = [i] for j in i: print_exception(j, indent+2) print_exception(top.exception) logger.error('dv.py failed') #raise top.exception else: logger.info('dv.py passed') finally: event.notify('dvpy_done') cleanup()