def _send_exit(self, to_addr, ref=None): """Send an exit message to the remote address.""" if self.greenlet.exception: message = {'exit': self.address, 'exception': exc.format_exc( self.greenlet._exc_info)} else: message = {'exit': self.address, 'value': self.greenlet.value} if ref: message['ref'] = ref message = json.dumps(message, default=handle_custom) self.mesh.exit(self.address, to_addr, message)
def main(self, *args, **kw): """Implement the actor main loop by waiting forever for messages. Do not override. """ self.start(*args, **kw) try: while True: pattern, message = self.receive(CALL_PATTERN) method = getattr(self, message['method'], None) if method is None: self.respond_invalid_method(message, message['method']) continue try: self.respond(message, method(message['message'])) except Exception: formatted = exc.format_exc() self.respond_exception(message, formatted) finally: self.stop(*args, **kw)