DJANGO_CELERY_BEAT access PeriodicTask from shared_task



在我的项目中,我使用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实例?
  2. 如果我有2个PeriodicTask使用相同的shared_task,但具有不同的调度/参数,它会发现哪个是特定运行的源吗?

提前感谢您的帮助。

我找到了一个方法。

正如我在评论中所说,使用@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是在文档中描述的芹菜应用程序。

bind=True,据我所知,是必要的,使任务有自己的请求,从而可以访问self的信息。

相关内容

  • 没有找到相关文章

最新更新