任务

class fabric.tasks.Task(alias=None, aliases=None, default=False, name=None, *args, **kwargs)

Fabric 任务对象的抽象基类。

执行 fab 命令时,会将 fabfile 中其所有子类的实例当作合法任务。

其具体实现以及 Task 子类的使用参见 新式任务 的文档。

1.1 新版功能.

__weakref__

该对象弱引用的列表(如果有定义的话)

get_hosts_and_effective_roles(arg_hosts, arg_roles, arg_exclude_hosts, env=None)

返回一个包含了当前任务将于使用到的主机列表以及将要使用到的角色的远祖。

如何设置主机列表的详细文档参见 How host lists are constructed

在 1.9 版更改.

class fabric.tasks.WrappedCallableTask(callable, *args, **kwargs)

透明地封装一个 callable 对象为合法任务。

通常通过 task 调用而不直接使用。

1.1 新版功能.

参见

unwrap_taskstask

fabric.tasks.execute(task, *args, **kwargs)

执行 task (可调用对象或其名字),与 host/role 装饰器保持一致。

task 可以是一个可调用对象,或者是一个注册任务的名字,只要命令行中提供了该名字(包括 命名任务 ,例如 "deploy.migrate" ),就会自动寻找对应的 callable 对象。

主机列表中的每一个主机上都会执行一次任务,其执行方式(也)和 CLI 任务一样:优先顺序是 -Henv.hostshostsroles 装饰器,依此类推。

关键字参数 hosthostsroleroles 以及 exclude_hosts 会在最后调用前整理清楚,用于生成任务真正的主机列表, 最终像是在命令行执行:fab taskname:host=hostname 一样。

其它参数或者关键字参数将会一字不差地传递给 task``(函数,而非封装在你的函数周围的 ``@task 装饰器),execute(mytask, 'arg1', kwarg1='value') 会(在每台主机上)这样都调用 mytask('arg1', kwarg1='value')

返回:一个主机字符串对应任务运行结果的字典。例如:主机 a 什么都不返回,主机 b 返回 'bar' 时,execute(foo, hosts=['a', 'b']) 的结果会是 {'a': None, 'b': 'bar'}。在一个主机执行失败,但并没有退出整个程序(如:env.skip_bad_hosts 设置为 True)时,该主机的返回值将是一个 error 对象或者信息。

参见

execute 使用文档 中提供了更详细的解释和示例。

1.3 新版功能.

在 1.4 版更改: 新增了返回值映射,之前的版本中没有返回值。

fabric.tasks.requires_parallel(task)

如果 task 需要在并行模式下运行则返回 True

具体来说:

  • 显式地添加了 @parallel 装饰器,或者:

  • 全局并行参数( env.parallel )为 Ture 显式地添加 @serial 装饰器。