如何将Fabric任务名称作为变量传递给execute()

时间:2014-07-28 07:21:07

标签: python task fabric execute

我有一种情况,即要执行的任务的名称来自json作为String。更像是u'taskName'

我正在尝试以这种格式执行任务:

import fabfile tn = mydict['taskname'] # this taskname is definitely present in the fabfile imported. //do something so this works: out = execute(tn) # This obviously doesnt work!

我知道execute接受了一个Task对象。

有人可以帮我将字符串(在tn中)转换为Task对象/或者如果我的语句错误,有人可以帮我解决如何调用fabfile中存在的特定任务吗?

1 个答案:

答案 0 :(得分:0)

如果您收到错误,您的执行语句称为对象,该对象不是使用不是任务名称的字符串的函数。请参阅此示例,了解它的工作原理:

来自fabric.api import *

@task
def foo():
    print "bar"


@task
def buzz():
    execute("foo")
    execute(foo)

请注意,这来自execute的文档,它将采用一个字符串(只要是@task装饰函数)或函数对象(不需要修饰)。

运行如下:

$ fab -f test.py buzz
bar
bar

Done.

另请注意,您无法通过execute()电话获取该播放的输出。再看一下返回值的文档部分,它是一个字典,将主机字符串映射到给定任务的主机执行运行的返回值。"