Я сотни коробки могут быть доступны только с другой шлюз, как ниже показано:Как передать env.host в ткань при использовании многопроцессорной обработки?
gateway1:ip1,ip2
gateway2:ip3,ip4 ...
Все работы нужно сделать в течение одной минуты, поэтому я использую многопроцессном ниже команды fab -f ytj_sto.py doitnow
, ошибки ниже.
[]
None
None
***Warning*** Host None via ssh is down
Код:
@parallel(pool_size=20)
def coll():
print env.hosts
print env.host
print env.gateway
if _is_ssh_ok(env.host):
d = patt()
def doitnow():
p=Pool(20)
with open('ytj_sto.hn','r') as f:
for line in f.readlines():
line = line.strip()
if not len(line) or line.startswith('#'):
continue
env.gateway = line.split(':')[0]
env.hosts = line.split(':')[1].split(',')
result = p.apply_async(coll, args=())
result.get()
p.close()
p.join()
Редакцией: Я использовал потрясающий -Н -g решить проблему, спасибо всем
def fabfun(Hosts,Gate,des,func1):
with settings(hide('running'), warn_only=True):
local(("fab -H %s -g %s -f %s %s ") % (Hosts,Gate,des,func1))
p=Pool(20)
starttime = time.asctime(time.localtime(time.time()))
print('Waiting for all job done...%s' % starttime)
with open('ytj_sto.hn','r') as f:
for line in f.readlines():
line = line.strip()
if not len(line) or line.startswith('#'):
continue
Hosts = line.split(':')[1]
Gate = line.split(':')[0]
p.apply_async(fabfun, args=(Hosts,Gate,des,func1))
p.close()
p.join()
Где ткань задача ('patt') вы пытаетесь позвонить? И как вы реализовали '_is_ssh_ok'? – 2ps