私は以前、関連する質問を:これをFabricを使用して並列実行するにはどうすればよいですか?
How to issue commands on remote hosts in parallel using Fabric without using a fabfile?
を、私はさまざまなテストホスト上で並行してテストを実行して問題を抱えています。
@parallel
def run_test(arg_list):
# arg_list is a list of dictionary. Each entry in
# arg_list has a 'ip_address' and a 'test_config_file'
for x in arg_list:
ip_address = x['ip_address']
test_config_file = x['test_config_file']
env['host_string'] = ip_address
# The test program "test_localhost.py" is already on all the Test hosts
cmd = "/root/test_localhost.py --ip_addr=" + ip_address + " --config=" + test_config_file
run(cmd)
if __name__ == '__main__':
env.parallel = True
# Each test host will have unique test_config_files
arg_list = list()
arg_list.append({'ip_address':'10.10.10.10', 'test_config_file': "config_01.json"})
arg_list.append({'ip_address':'10.10.10.11', 'test_config_file': "config_02.json"})
execute(run_test, arg_list)
私は2+のテストホストに対してこのコードを実行しました:
私のコードは次のようになります。テストホストでテストが実行されているかどうかを確認するスクリプトがあります。テストは並行して実行されません。
代わりに、テストは順次実行されます。「test_localhost.py」は10.10.10.10で最初に実行され、その後は10.10.10.11で実行されます。
テストを並行して実行するために何か必要なことはありますか?
注:テスト用のホストごとに異なるテスト構成ファイルを送信しているため、fabfileを使用することはできません。
2PS、アドバイスに感謝が、必要な設定ファイルがあるので、私はfabfileを使用することはできません渡され、スクリプトによって解析されます。 私の場合、fabfile.pyは実行時引数を取る必要があります。 – SQA777
ファブリックコマンドは実行時引数を取ることができます。 '@ task'で修飾された関数に引数を追加するだけです。 – 2ps
2ps:env.host_dataは定義されていますか?私はあなたに非常に似ているように私のスクリプトを書きましたが、Pythonはこのラインで文句を言う: env.host_data [X [「のip_address」]] = X 私は、Python 2.7を使用していると私はfabric.context_manager – SQA777