Truyền một vải env.hosts sting dưới dạng biến không hoạt động trong chức năng.Truyền một vải env.hosts sting dưới dạng biến không hoạt động trong chức năng
demo.py
#!/usr/bin/env python
from fabric.api import env, run
def deploy(hosts, command):
print hosts
env.hosts = hosts
run(command)
main.py
#!/usr/bin/env python
from demo import deploy
hosts = ['localhost']
command = 'hostname'
deploy(hosts, command)
python main.py
['localhost']
No hosts found. Please specify (single) host string for connection:
Nhưng env.host_string công trình!
demo.py
#!/usr/bin/env python
from fabric.api import env, run
def deploy(host, command):
print host
env.host_string = host
run(command)
main.py
#!/usr/bin/env python
from demo import deploy
host = 'localhost'
command = 'hostname'
deploy(host, command)
python main.py
localhost
[localhost] run: hostname
[localhost] out: heydevops-workspace
Nhưng env.host_string là không đủ cho chúng ta, đó là một máy chủ duy nhất . Có lẽ chúng ta có thể sử dụng env.host_string trong vòng lặp, nhưng điều đó không tốt. Bởi vì chúng tôi cũng muốn thiết lập số nhiệm vụ đồng thời và chạy chúng song song.
Bây giờ trong ddep (engine triển khai của tôi), tôi chỉ sử dụng MySQLdb để có được các thông số sau đó thực hiện lệnh fab như:
os.system("fab -f service/%s.py -H %s -P -z %s %s" % (project,host,number,task))
Đây là một cách đơn giản nhưng không tốt. Vì nếu tôi sử dụng lệnh fab, tôi không thể nắm bắt các ngoại lệ và lỗi của kết quả bằng Python, để làm cho ddep của tôi có thể "thử lại" các máy chủ không thành công. Nếu tôi sử dụng "từ triển khai nhập demo", tôi có thể kiểm soát và nhận chúng bằng một số mã bằng Python.
Vì vậy, bây giờ "env.host" là sự cố. Ai đó có thể cho tôi một giải pháp? Cảm ơn rất nhiều.
Thank you very much Alexander! Tôi cố định nó một mình, sau đó tìm thấy cách của chúng tôi là như nhau. – mcsrainbow
Tuyệt vời, điều này cũng phù hợp với tôi. Cảm ơn! – xamox