Omroth
Omroth

Reputation: 1129

How to get the celery.Task object from the @app.task

I have a task function:

@app.task(base=ProcessingTask)
def do_processing_task(args):

ProcessingTask inherits celery.Task:

class ProcessingTask(celery.Task):
    def on_success(self, res, task_id, args, kwargs):

I start the task remotely with

result = app.send_task("workerTasks.do_processing_task", args=[args])

(I don't have access to the workerTasks file from the server file which calls this, so send_task is the route I need to take)

Within do_processing_task I'd like to get the instance of the ProcessingTask object so I can add some data to it that I can use in do_processing_task::on_success.

Is this possible? Thanks.

Upvotes: 1

Views: 693

Answers (1)

Omroth
Omroth

Reputation: 1129

Bound tasks

A task being bound means the first argument to the task will always be the task instance (self), just like Python bound methods:

logger = get_task_logger(__name__)

@task(bind=True)
def add(self, x, y):
    logger.info(self.request.id)

Upvotes: 1

Related Questions