Exemple #1
0
    def __init__(self, parent, **kwargs):
        super().__init__(parent, **kwargs)
        import celery
        from celery.signals import (
            before_task_publish,
            after_task_publish,
            task_prerun,
            task_retry,
            task_success,
            task_failure,
            task_revoked,
        )

        before_task_publish.connect(receivers.receiver_before_task_publish)
        after_task_publish.connect(receivers.receiver_after_task_publish)
        task_prerun.connect(receivers.receiver_task_pre_run)
        task_retry.connect(receivers.receiver_task_retry)
        task_success.connect(receivers.receiver_task_success)
        task_failure.connect(receivers.receiver_task_failure)
        task_revoked.connect(receivers.receiver_task_revoked)
        if celery.VERSION > (4, ):

            from celery.signals import task_unknown, task_rejected

            task_unknown.connect(receivers.receiver_task_unknown)
            task_rejected.connect(receivers.receiver_task_rejected)
Exemple #2
0
    def add_run_signals(cls, dapper_local):
        from celery.signals import task_prerun, task_postrun, task_failure, task_revoked
        task_prerun.connect(cls.task_begin)
        task_postrun.connect(cls.task_end)
        task_failure.connect(cls.task_fail)
        task_revoked.connect(cls.task_revoked)

        cls.dapper_local = dapper_local
Exemple #3
0
    task = ManagedTask.objects.get(celery_task_id=task_id)
    task.celery_task_status = 5
    task.is_enable = False
    task.save(check_enable=False)


def on_task_rejected(*args, **kwargs):
    task = kwargs['sender']

    task_id = task.request.id
    task = ManagedTask.objects.get(celery_task_id=task_id)
    task.celery_task_status = 6
    task.is_enable = False
    task.save(check_enable=False)


def on_task_worker_shutting_down(*args, **kwargs):
    ManagedTask.objects.filter(is_enable=True).update(celery_task_status=6)


worker_ready.connect(on_worker_ready, dispatch_uid='on_worker_ready')
task_prerun.connect(on_task_prerun, dispatch_uid='on_task_prerun')
task_postrun.connect(on_task_finished, dispatch_uid='on_task_postrun')

task_success.connect(on_task_success, dispatch_uid='on_task_success')
task_retry.connect(on_task_retry, dispatch_uid='on_task_retry')
task_failure.connect(on_task_failure, dispatch_uid='on_task_failure')
task_revoked.connect(on_task_revoked, dispatch_uid='on_task_revoked')
task_rejected.connect(on_task_rejected, dispatch_uid='on_task_rejected')
worker_shutting_down.connect(on_task_worker_shutting_down,
                             dispatch_uid='on_task_worker_shutting')
Exemple #4
0
    def handler(task, **kwargs):
        if not isinstance(task, basestring):
            task = _get_task_name(task)
        metrics.incr('jobs.{0}'.format(name), instance=task)

    signal.connect(
        handler,
        weak=False,
        dispatch_uid='sentry.stats.tasks.{0}'.format(name),
    )


def task_revoked_handler(task, expired=False, **kwargs):
    if not isinstance(task, basestring):
        task = _get_task_name(task)
    if expired:
        metrics.incr('jobs.expired', instance=task)
    else:
        metrics.incr('jobs.revoked', instance=task)


task_revoked.connect(
    task_revoked_handler,
    weak=False,
    dispatch_uid='sentry.stats.tasks.revoked',
)

record_task_signal(task_prerun, 'started')
record_task_signal(task_postrun, 'finished')
record_task_signal(task_sent, 'dispatched')
Exemple #5
0
def record_task_signal(signal, name):
    def handler(task, **kwargs):
        if not isinstance(task, basestring):
            task = _get_task_name(task)
        metrics.incr('jobs.{0}'.format(name), instance=task)

    signal.connect(
        handler,
        weak=False,
        dispatch_uid='sentry.stats.tasks.{0}'.format(name),
    )


# https://celery.readthedocs.org/en/latest/userguide/signals.html#task-revoked
def task_revoked_handler(sender, expired=False, **kwargs):
    if expired:
        metrics.incr('jobs.expired', instance=sender)
    else:
        metrics.incr('jobs.revoked', instance=sender)


task_revoked.connect(
    task_revoked_handler,
    weak=False,
    dispatch_uid='sentry.stats.tasks.revoked',
)

record_task_signal(task_prerun, 'started')
record_task_signal(task_postrun, 'finished')
record_task_signal(task_sent, 'dispatched')
Exemple #6
0
def setup_queues(sender, instance, **kwargs):
    if Q_MGMT not in instance.app.amqp.queues:
        from que.handlers import task_revoked_handler
        task_revoked.connect(task_revoked_handler)