2016-12-12 2 views
-1

У меня есть 3400 машин Неют для передачи данных в графит, но мои сценарии занимают abount 5 минут, чтобы закончить, как я могу уменьшить его до 3-й или 2-х минут, спасибо, приведенного ниже кодаКак скопировать скрипты с 3400 машинами?

def sendmsg(hostname,metric): 
     a = mntdir + hostname + '/' + metric + '_median' 
     with settings(hide('running'), warn_only=True): 
      valueMedian = local(("cat %s|grep %s|awk '{print $2}'") % (a,now),capture=True) 
      local(("echo %s.%s_Median_90days %s %s >/dev/udp/20.26.2.18/2001 ") % (hostname,metric,valueMedian,unixdate)) 


if __name__=='__main__': 
    while True: 
     localtime = time.asctime(time.localtime(time.time())) 
     date = datetime.datetime.now() 
     now1 = date.strftime("%H:%M") 
     print now1 
     now2 = date.strftime("%M") 
     with settings(hide('running'), warn_only=True): 
      unixdate = local("date +%s",capture=True) 
     if int(now2) % 5 == 0: 
      now = now1 + ':00' 
      p=Pool(100) 
      print now 
      for hostname in host: 
       for metric in metrics: 
        p.apply_async(sendmsg, args=(hostname,metric)) 
      starttime = time.asctime(time.localtime(time.time())) 
      print('Waiting for all job done...%s' % starttime) 
      p.close() 
      p.join() 
      stoptime = time.asctime(time.localtime(time.time())) 
      print('sending completed...%s ' % stoptime) 
     time.sleep(60) 
+0

Что делает ваша * локальная функция? – volcano

ответ

1
awk '/foo/ {print $2}' file 

делает примерно такой же, как ваш

cat file | grep foo | awk '{print $2}' 

и избегает создания двух процессов, которые могут немного помочь.

+1

'grep foo file | ... '(бесполезное использование кота) –

+0

haha, это уменьшено до 3+ минут, любые другие предложения lol, 2минут будут намного лучше – Flasking

+0

@KlausD., Это именно то, что рекомендовал Ульрих - ** удаление этой формы ** – volcano

 Смежные вопросы

  • Нет связанных вопросов^_^