タスク

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

Fabricのタスクとしてピックアップされることを要求するオブジェクトのための抽象基底クラスです。

fab ツールによって読み込まれるfabfile内にサブクラスのインスタンスが存在するときに有効なタスクとして扱われます。

Task サブクラスの実装と利用の方法の詳細は new-style tasks の利用方法のドキュメントをご覧ください。

バージョン 1.1 で追加.

__weakref__

list of weak references to the object (if defined)

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

Return a tuple containing the host list the given task should be using and the roles being used.

ホストリストがどのようにセットされるのかについての詳細はドキュメントの ホストリストがどのように作られるか をご覧ください。

バージョン 1.9 で変更.

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

与えられた呼び出し可能オブジェクトを透過的にラップし、有効なタスクであるとマークします。

通常は直接ではなく task 経由で利用されます。

バージョン 1.1 で追加.

参考

unwrap_taskstask

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

ホスト/ロールデコレーターなどを履行し、 task (呼び出し可能なオブジェクトもしくはタスク名) を実行します。

task は実際の呼び出し可能なオブジェクトもしくは登録されたタスク名で、まるでその名称が (namespaced tasks も含み、例えば "deploy.migrate" など) コマンドラインに与えられたかのように呼び出し可能なオブジェクトを調べるために利用されます。

このタスクはホストリストにもとづき各ホストに対して一度ずつ実行されます。ホストリストは、CLIで指定されたタスクと同じように(再び)生成されたもので、 -Henv.hostshosts もしくは roles デコレーターなどから取り出されます。

hosthostsrolerolesexclude_hosts キーワード引き数は最終的な呼び出しでは取り除かれ、例えば fab taskname:host=hostname のようにまるでコマンドラインで指定されたかのように、そのタスクのホストリストのセットに利用されます。

その他のすべての引き数やキーワード引き数は呼び出されたときにそれぞれ task (関数自身で、関数をラップする @task デコレーターではありません!) に渡されます。そして execute(mytask, 'arg1', kwarg1='value') が(各ホストごとに) mytask('arg1', kwarg1='value') を実行します。

戻り値:そのホストに対して実行した与えられたタスクの返り値にホスト文字列をマッピングした辞書です。例えば execute(foo, hosts=['a', 'b']) は、 foo がホスト a に対して何も返していなくてホスト b に対しては 'bar' を返している時、 {'a': None, 'b': 'bar'} を返します。もし全体的な進行は中止されないけれども与えれれたホストに対してタスク実行に失敗した場合 ( env.skip_bad_hosts がTrueのときなど)、そのホストのための返り値はエラーオブジェクトかエラーメッセージになります。

参考

詳しい説明とさらなる例は The execute usage docs を参照してください。

バージョン 1.3 で追加.

バージョン 1.4 で変更: 返り値のマッピングを追加。以前はこの関数は定義された返り値は持っていませんでした。

fabric.tasks.requires_parallel(task)

Returns True if given task should be run in parallel mode.

Specifically:

  • It’s been explicitly marked with @parallel, or:
  • It’s not been explicitly marked with @serial and the global parallel option (env.parallel) is set to True.