Có cách nào để tự động sửa đổi máy chủ giữa nhiều tác vụ song song không? Đây là những gì tôi có cho đến nay.Máy chủ động và nhiệm vụ song song với thư viện Fabric
def init_hosts():
env.hosts = [host1,host2,host3,host4]
@parallel
def task_1():
if condition is False:
env.hosts.remove(env.host)
@parallel
def task_2():
run('uname -s')
Rõ ràng là tôi đang thiếu một số env
paramenters, nhưng tôi chỉ muốn task_2
để chạy trên máy mà đáp ứng các điều kiện trong task_1
. Nó xuất hiện danh sách máy chủ của task_2
được khởi tạo khi khởi động, bởi vì nó đang chạy trên tất cả các máy chủ trong danh sách env.hosts
ban đầu được xác định trong init_hosts()
. Tôi cũng đã cố gắng tự động sửa đổi và xây dựng các roledef, nhưng cũng có kết quả tương tự.
Chỉnh sửa: Ngoài ra, có cách nào để thiết lập hàng đợi thực hiện song song sao cho nhiều tác vụ song song được thực thi song song chứ không phải tuần tự?
Edit: Tôi quản lý để có được kết quả cuối cùng mong muốn của tôi bằng cách có mỗi nhiệm vụ đầu ra trở lại, và phân tích các kết quả để xây dựng một danh sách máy chủ mới để vượt qua để thực hiện():
def init_hosts():
env.hosts = [host1,host2,host3,host4]
@parallel
def task_1():
if condition is False:
return False
else:
return True
@parallel
def task_2():
run('uname -s')
def run_tests():
results = execute(task_1)
successful_hosts = [k for k in results.iterkeys() if results[k]]
execute(test_2, hosts=successful_hosts)
này hoạt động, nhưng nó tổng số vì nhiều lý do. Có cách nào tốt hơn?