我有一种情况,即要执行的任务的名称来自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中存在的特定任务吗?
答案 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()
电话获取该播放的输出。再看一下返回值的文档部分,它是一个字典,将主机字符串映射到给定任务的主机执行运行的返回值。"