Beispiel #1
0
def fire(signal_name, obj=None, namespace="aristotle_mdr.contrib.async_signals", **kwargs):
    from django.utils.module_loading import import_string
    message = kwargs
    if getattr(settings, 'ARISTOTLE_ASYNC_SIGNALS', False):
        # pragma: no cover -- We've dropped channels, and are awaiting (pun) on celery stuff
        message.update({
            '__object__': {
                'pk': obj.pk,
                'app_label': obj._meta.app_label,
                'model_name': obj._meta.model_name,
            },
            # "__signal__": signal_name,
        })
        from aristotle_bg_workers.celery import app
        message = clean_signal(message)
        app.send_task(
            'fire_async_signal',
            args=[namespace, signal_name],
            kwargs={"message": message}
        )

        # Channel("aristotle_mdr.contrib.channels.%s" % signal_name).send(message)
    else:
        message.update({'__object__': {'object': obj}})
        import_string("%s.%s" % (namespace, signal_name))(message)
    def get(self, request, task_name):

        task_promise = app.send_task(
            task_name, kwargs={"requester": self.request.user.email})
        display_name = get_pretty_name(task_name)

        return HttpResponse(task_promise.id)
 def async_handle_delete(self, sender, instance, **kwargs):
     if not settings.ARISTOTLE_ASYNC_SIGNALS:
         super().handle_delete(sender, instance, **kwargs)
     else:
         from aristotle_bg_workers.celery import app
         app.send_task(
             'update_search_index',
             args=[
                 'delete',
                 {   # sender
                     'app_label': sender._meta.app_label,
                     'model_name': sender._meta.model_name,
                 },
                 {   # instance
                     'pk': instance.pk,
                     'app_label': instance._meta.app_label,
                     'model_name': instance._meta.model_name,
                 },
             ],
             kwargs=kwargs
         )
 def async_handle_delete(self, sender, instance, **kwargs):
     if not settings.ARISTOTLE_ASYNC_SIGNALS:
         super().handle_delete(sender, instance, **kwargs)
     else:
         from aristotle_bg_workers.celery import app
         app.send_task(
             'update_search_index',
             args=[
                 'delete',
                 {   # sender
                     'app_label': sender._meta.app_label,
                     'model_name': sender._meta.model_name,
                 },
                 {   # instance
                     'pk': instance.pk,
                     'app_label': instance._meta.app_label,
                     'model_name': instance._meta.model_name,
                 },
             ],
             kwargs=kwargs
         )
 def async_handle_save(self, sender, instance, **kwargs):
     if not settings.ARISTOTLE_ASYNC_SIGNALS:
         super().handle_save(sender, instance, **kwargs)
     else:
         from aristotle_mdr.contrib.async_signals.utils import clean_signal
         message = clean_signal(kwargs)
         from aristotle_bg_workers.celery import app
         app.send_task(
             'update_search_index',
             args=[
                 'save',
                 {   # sender
                     'app_label': sender._meta.app_label,
                     'model_name': sender._meta.model_name,
                 },
                 {   # instance
                     'pk': instance.pk,
                     'app_label': instance._meta.app_label,
                     'model_name': instance._meta.model_name,
                 },
             ],
             kwargs=message
         )
 def async_handle_save(self, sender, instance, **kwargs):
     if not settings.ARISTOTLE_ASYNC_SIGNALS:
         super().handle_save(sender, instance, **kwargs)
     else:
         from aristotle_mdr.contrib.async_signals.utils import clean_signal
         message = clean_signal(kwargs)
         from aristotle_bg_workers.celery import app
         app.send_task(
             'update_search_index',
             args=[
                 'save',
                 {   # sender
                     'app_label': sender._meta.app_label,
                     'model_name': sender._meta.model_name,
                 },
                 {   # instance
                     'pk': instance.pk,
                     'app_label': instance._meta.app_label,
                     'model_name': instance._meta.model_name,
                 },
             ],
             kwargs=message
         )
    def get(self, request, task_name):

        task_promise = app.send_task(task_name)
        display_name = get_pretty_name(task_name)
        store_task(task_promise.id, display_name, request.user)
        return HttpResponse(task_promise.id)
    def get(self, request, task_name):

        task_promise = app.send_task(task_name, kwargs={"requester": self.request.user.email})
        display_name = get_pretty_name(task_name)

        return HttpResponse(task_promise.id)
def run_task_by_name_on_commit(task: str, args: Iterable = [], kwargs: Mapping = {}):
    """
    Run a celery task by name after the next database commit (if we are in a transaction)
    The function above is preffered, only use this one if you can't import the task
    """
    transaction.on_commit(lambda: app.send_task(task, args, kwargs))