In my project, I use django celery beat package to execute scheduled tasks. It works well but I have one case that I can't handle.
All the tasks have a PeriodicTack that schedules them.
So the following task:
from celery import shared_task
@shared_task
def foo(**kwargs):
# Here I can do things like this :
whatever_method(kwargs["bar"])
Don't know if it is luck but it turns out that kwargs "points" to the kwargs attribute of the PeriodicTask model.
My question is :
PeriodicTask instance that made the task run ?PeriodicTask that use the same shared_task but with different schedules/parameters, will it find out which one was the source for that particular run ?Thanks in advance for your help.
Ok I found a way to do this.
As I said in the comment, making use of @app.task solves my needs.
I end up with a task like this :
@app.task(bind=True)
def foo(self, **kwargs):
# The information I personally need is in self properties, like so :
desired_info = self.request.properties
# Do whatever is needed with desired info...
# Do whatever else ...
Where app is the Celery app as described in the docs.
The bind=True is, as I understood, necessary to make the task having its own request and thus having access to self with information.