Skip to main content
 首页 » 编程设计

python之当我的任务继承自 Task 类时,如何使用 @roles 装饰 Fabric 任务

2025年05月04日10dflying

我将许多任务定义为任务子类,并且我将 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 装饰器,如果它们是模块中的函数,我可以装饰任务,但我不确定如何将其应用于 Task 类。装饰类或其运行函数似乎不起作用。

我正在使用 Fabric 1.4.0

请您参考如下方法:

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

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

或使用执行:

execute(foo, roles='web')