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

Python 当我的任务从Task类继承时,如何使用@roles装饰Fabric任务?,python,fabric,Python,Fabric,我有许多任务被定义为任务子类,我的roledefs集与以下类似: 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我认为您应

我有许多任务被定义为任务子类,我的roledefs集与以下类似:

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

我认为您应该能够像这样使用init:

def __init__(self):
     env.roles = ['web']
或使用执行:

execute(foo, roles='web')

第一个示例说明在从命令行运行时找不到“foo”任务是无效的。第二个我不确定是否可以使用,因为我不想立即执行任务,只有在命令行上指定时才可以。为了清晰起见,更新为建议init并保留另一个。在
\uuuuu init\uuuu
中设置角色似乎可行,但在我使用的版本中,我必须使用
env.roles=[“web”]
。应该这样做吗?我在文件里肯定找不到。谢谢你的帮助@Morgan.ah是的,对不起,再次更新。在浏览器中进行编码并不是那么理想。我发现在
Foo
类中设置
roles
属性也很有效。