Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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)