Beispiel #1
0
    def from_message(cls, message, message_data, on_ack=noop, logger=None,
            eventer=None, hostname=None):
        """Create a :class:`TaskRequest` from a task message sent by
        :class:`celery.messaging.TaskPublisher`.

        :raises UnknownTaskError: if the message does not describe a task,
            the message is also rejected.

        :returns :class:`TaskRequest`:

        """
        task_name = message_data["task"]
        task_id = message_data["id"]
        args = message_data["args"]
        kwargs = message_data["kwargs"]
        retries = message_data.get("retries", 0)
        eta = maybe_iso8601(message_data.get("eta"))
        expires = maybe_iso8601(message_data.get("expires"))

        _delivery_info = getattr(message, "delivery_info", {})
        delivery_info = dict((key, _delivery_info.get(key))
                                for key in WANTED_DELIVERY_INFO)

        if not hasattr(kwargs, "items"):
            raise InvalidTaskError("Task kwargs must be a dictionary.")

        return cls(task_name, task_id, args, kwdict(kwargs),
                   retries=retries, on_ack=on_ack,
                   delivery_info=delivery_info, logger=logger,
                   eventer=eventer, hostname=hostname,
                   eta=eta, expires=expires)
Beispiel #2
0
 def _applier(request, **options):
     kwargs = kwdict(request.method == 'POST' and request.POST
                     or request.GET)
     # no multivalue
     kwargs = dict(((k, v) for k, v in kwargs.iteritems()), **options)
     result = task.apply_async(kwargs=kwargs)
     return JsonResponse({'ok': 'true', 'task_id': result.task_id})
Beispiel #3
0
 def _dispatch_event(self, event):
     self.event_count += 1
     event = kwdict(event)
     group, _, type = partition(event.pop("type"), "-")
     self.group_handlers[group](type, event)
     if self.event_callback:
         self.event_callback(self, event)
Beispiel #4
0
    def _applier(request, **options):
        kwargs = kwdict(request.method == "POST" and \
                        request.POST.copy() or request.GET.copy())
        kwargs.update(options)

        result = task.apply_async(kwargs=kwargs)
        return JsonResponse({"ok": "true", "task_id": result.task_id})
Beispiel #5
0
    def from_message(cls, message, body, on_ack=noop, **kw):
        """Create request from a task message.

        :raises UnknownTaskError: if the message does not describe a task,
            the message is also rejected.

        """
        _delivery_info = getattr(message, "delivery_info", {})
        delivery_info = dict((key, _delivery_info.get(key))
                                for key in WANTED_DELIVERY_INFO)

        kwargs = body["kwargs"]
        if not hasattr(kwargs, "items"):
            raise InvalidTaskError("Task keyword arguments is not a mapping.")

        return cls(task_name=body["task"],
                   task_id=body["id"],
                   args=body["args"],
                   kwargs=kwdict(kwargs),
                   retries=body.get("retries", 0),
                   eta=maybe_iso8601(body.get("eta")),
                   expires=maybe_iso8601(body.get("expires")),
                   on_ack=on_ack,
                   delivery_info=delivery_info,
                   **kw)
Beispiel #6
0
 def _applier(request, **options):
     kwargs = kwdict(request.method == 'POST' and
                     request.POST or request.GET)
     # no multivalue
     kwargs = dict(((k, v) for k, v in kwargs.iteritems()), **options)
     result = task.apply_async(kwargs=kwargs)
     return JsonResponse({'ok': 'true', 'task_id': result.task_id})
Beispiel #7
0
    def execute(self, command, kwargs=None, reply_to=None):
        """Execute control command by name and keyword arguments.

        :param command: Name of the command to execute.
        :param kwargs: Keyword arguments.

        """
        kwargs = kwargs or {}
        control = None
        try:
            control = self.panel[command]
        except KeyError:
            self.logger.error("No such control command: %s" % command)
        else:
            try:
                reply = control(self.panel, **kwdict(kwargs))
            except SystemExit:
                raise
            except Exception, exc:
                self.logger.error(
                        "Error running control command %s kwargs=%s: %s" % (
                            command, kwargs, exc))
                reply = {"error": str(exc)}
            if reply_to:
                self.reply({self.hostname: reply},
                           exchange=reply_to["exchange"],
                           routing_key=reply_to["routing_key"])
            return reply
Beispiel #8
0
    def from_message(cls, message, body, on_ack=noop, **kw):
        """Create request from a task message.

        :raises UnknownTaskError: if the message does not describe a task,
            the message is also rejected.

        """
        _delivery_info = getattr(message, "delivery_info", {})
        delivery_info = dict(
            (key, _delivery_info.get(key)) for key in WANTED_DELIVERY_INFO)

        kwargs = body["kwargs"]
        if not hasattr(kwargs, "items"):
            raise InvalidTaskError("Task keyword arguments is not a mapping.")

        return cls(task_name=body["task"],
                   task_id=body["id"],
                   taskset_id=body.get("taskset", None),
                   args=body["args"],
                   kwargs=kwdict(kwargs),
                   retries=body.get("retries", 0),
                   eta=maybe_iso8601(body.get("eta")),
                   expires=maybe_iso8601(body.get("expires")),
                   on_ack=on_ack,
                   delivery_info=delivery_info,
                   **kw)
Beispiel #9
0
 def _dispatch_event(self, event):
     self.event_count += 1
     event = kwdict(event)
     group, _, type = partition(event.pop("type"), "-")
     self.group_handlers[group](type, event)
     if self.event_callback:
         self.event_callback(self, event)
Beispiel #10
0
    def execute(self, command, kwargs=None, reply_to=None):
        """Execute control command by name and keyword arguments.

        :param command: Name of the command to execute.
        :param kwargs: Keyword arguments.

        """
        kwargs = kwargs or {}
        control = None
        try:
            control = self.panel[command]
        except KeyError:
            self.logger.error("No such control command: %s" % command)
        else:
            try:
                reply = control(self.panel, **kwdict(kwargs))
            except SystemExit:
                raise
            except Exception, exc:
                self.logger.error(
                        "Error running control command %s kwargs=%s: %s" % (
                            command, kwargs, exc), exc_info=sys.exc_info())
                reply = {"error": str(exc)}
            if reply_to:
                self.reply({self.hostname: reply},
                           exchange=reply_to["exchange"],
                           routing_key=reply_to["routing_key"])
            return reply
Beispiel #11
0
 def _applier(request, **options):
     kwargs = kwdict(request.method == "POST" and \
                     request.POST or request.GET)
     # no multivalue
     kwargs = dict(((k, v) for k, v in kwargs.iteritems()), **options)
     result = task.apply_async(kwargs=kwargs)
     return JsonResponse({"ok": "true", "task_id": result.task_id})
Beispiel #12
0
 def event(self, event):
     """Process event."""
     self.event_count += 1
     event = kwdict(event)
     group, _, type = partition(event.pop("type"), "-")
     self.group_handlers[group](type, event)
     if self.event_callback:
         self.event_callback(self, event)
Beispiel #13
0
    def _applier(request, **options):
        kwargs = kwdict(request.method == "POST" and \
                        request.POST or request.GET)
        kwargs = dict((k, v[0])
                        for k, v in dict(kwargs, **options).iteritems())

        result = task.apply_async(kwargs=kwargs)
        return JsonResponse({"ok": "true", "task_id": result.task_id})
 def event(self, event):
     """Process event."""
     self.event_count += 1
     event = kwdict(event)
     group, _, type = partition(event.pop("type"), "-")
     self.group_handlers[group](type, event)
     if self.event_callback:
         self.event_callback(self, event)
Beispiel #15
0
    def execute(self, command, kwargs=None, reply_to=None):
        """Execute control command by name and keyword arguments.

        :param command: Name of the command to execute.
        :param kwargs: Keyword arguments.

        """
        kwargs = kwargs or {}
        control = None
        try:
            control = self.panel[command]
        except KeyError:
            self.logger.error("No such control command: %s" % command)
        else:
            reply = control(self.panel, **kwdict(kwargs))
            if reply_to:
                self.reply({self.hostname: reply},
                           exchange=reply_to["exchange"],
                           routing_key=reply_to["routing_key"])
            return reply
Beispiel #16
0
    def _applier(request, **options):
        kwargs = kwdict(request.method == "POST" and request.POST.copy() or request.GET.copy())
        kwargs.update(options)

        result = task.apply_async(kwargs=kwargs)
        return JsonResponse({"ok": "true", "task_id": result.task_id})