当我的任务从Task类继承时,如何使用@roles修饰Fabric任务?

时间:2012-09-13 23:51:48

标签: python fabric

我将许多任务定义为Task子类,并且我将roledef设置为类似于以下内容:

env.roledefs = { "web": ["1.2.3.4"], "db": ["5.6.7.8"] }

class Foo(Task):
  name = "foo"

  def run(self):
    pass

foo = Foo()

使用@roles装饰器,如果它们是模块中的函数,我可以装饰任务,但我不知道如何将它应用于任务类。装饰类或其运行功能似乎不起作用。

我正在使用Fabric 1.4.0

1 个答案:

答案 0 :(得分:1)

认为你应该能够像使用init那样:

def __init__(self):
     env.roles = ['web']

或使用执行:

execute(foo, roles='web')