gpt4 book ai didi

python - 向可从自定义基类访问的 celery 函数添加额外属性

转载 作者:行者123 更新时间:2023-12-05 02:08:24 25 4
gpt4 key购买 nike

当使用 @task 装饰器定义 celery 任务函数时,是否可以向装饰器添加一些额外的属性,当任务开始时我可以从我的任务基类访问这些属性而不添加新参数到任务函数本身?

有点像

class CustomBase(celery.Task):
def __call__(self, *args, **kwargs):
# do something with foo
...

self.run()

@task(base=CustomBase, bind=True, foo=123)
def add(self, x, y):
return x + y

最佳答案

如果您将一些变量传递给任务装饰器(使用 bind=True),它会将它们传递给任务的构造函数。您可以使用 self 访问它们。代码示例

from celery import Celery, chord, chain, Task

backend = 'redis://redis:6379/'
app = Celery(result_backend=backend, backend=backend)


class CustomBase(Task):
def __call__(self, *args, **kwargs):
print(self.foo) # in class
return super().__call__(*args, **kwargs)


@app.task(base=CustomBase, bind=True, foo=123)
def add(self, x, y):
print(self.foo) # in task
return x + y


add.apply_async((1, 2))

关于python - 向可从自定义基类访问的 celery 函数添加额外属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60994359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com