如何使用celery.set()方法更新抽象基类的属性

时间:2014-12-23 16:12:16

标签: python celery celery-canvas

我想使用celery.signature()。set()方法在链中调用我的任务时更改其配置。

这是我的任务看起来像

class MyBaseTask(Task)
  myconfig = None


@app.task(base=MyBaseTask)
def mytask():
  print mytask.myconfig

以下是我希望如何调用链

chain(mytask.s(message).set(myconfig=config1), mytask.s().set(myconfig=config2))
这可能吗?其他与任务相关的配置可以像这样设置,例如队列。如何在抽象基类中公开此行为?

1 个答案:

答案 0 :(得分:0)

不,我不相信这是可能的,因为芹菜目前保留了一个白名单值,可以作为发送给代理的消息的一部分进行传输。通常,如果要动态更改动态内容,只需将动态内容作为输入参数传递给任务。

def mytask(myconfig):
    print mytask.myconfig