DJANGO_CELERY_BEAT从共享任务访问周期任务

szqfcxe2  于 2023-01-10  发布在  Go
关注(0)|答案(1)|浏览(116)

在我的项目中,我使用django celery beat包来执行计划任务。它工作得很好,但我有一个案例,我不能处理。
所有任务都有一个PeriodicTack来调度它们。
接下来的任务是:

from celery import shared_task

@shared_task
def foo(**kwargs):
    # Here I can to things like this :
    whatever_method(kwargs["bar"])

不知道这是不是运气,但事实证明kwargs "指向" PeriodicTask模型的kwargs属性。

    • 我的问题是**

1.如何访问运行任务的PeriodicTask示例?
1.如果我有2个PeriodicTask使用相同的shared_task,但使用不同的调度/参数,它会找出哪个是该特定运行的源吗?
先谢谢你的帮助。

xqkwcwgp

xqkwcwgp1#

好吧,我找到了一个办法.
正如我在评论中所说,利用@app.task解决了我的需求。
我最终得到了这样一个任务:

@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 ...

其中app是文档中描述的Celery应用程序。
据我所知,bind=True是使任务具有自己的请求并因此能够访问self的信息所必需的。

相关问题