fragte ich eine ähnliche Frage früher:Wie kann ich dies mit Fabric parallel ausführen lassen?
How to issue commands on remote hosts in parallel using Fabric without using a fabfile?
Ich habe Probleme Ausführung Tests parallel auf verschiedenen Test Hosts haben.
Mein Code sieht wie folgt aus:
@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)
ich diesen Code gegen 2+ Test Hosts ausgeführt haben. Ich habe ein Skript, das überprüft, ob die Tests auf den Test-Hosts laufen. Die Tests werden nicht parallel ausgeführt.
Stattdessen werden die Tests sequenziell ausgeführt. Die Datei "test_localhost.py" wird zuerst am 10.10.10.10 ausgeführt. Nach Abschluss der Tests wird sie am 10.10.10.11 ausgeführt.
Gibt es noch etwas, was ich tun muss, um die Tests parallel laufen zu lassen?
Hinweis: Ich kann fabfile nicht verwenden, da ich verschiedene Testkonfigurationsdateien für jeden Testhost sende.
2ps, danke für den Rat, aber ich kann keine fabfile verwenden, da es Konfigurationsdateien, die brauchen übergeben werden, dann vom Skript analysiert. In meinem Fall muss die fabfile.py Laufzeitargumente nehmen. – SQA777
Fabric-Befehle können Laufzeitargumente annehmen. Fügen Sie einfach Argumente zur Funktion hinzu, die mit '@ task' verziert sind. – 2ps
2ps: Ist env.host_data definiert? Ich schrieb meinen Skript zu sein, sehr ähnlich wie bei Ihnen, aber Python klagt an dieser Linie: env.host_data [x [ ‚ip_adresse‘]] = x Ich verwende Python 2.7 und ich importierte das env-Modul von fabric.context_manager – SQA777