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)
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})
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)
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})
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)
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
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)
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
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})
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)
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 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
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})