- 论坛徽章:
- 0
|
from birdman.include.machine import cpu_info,mem_info,disk_info,load_info
import threading,os,sys
from django.shortcuts import render_to_response
from birdman.models import Machineinfo
server_list = '/data/serverlist/host.conf'
def machine_info(ip):
host_ip = []
machineinfo = []
host_ip.append(ip.strip())
machineinfo = host_ip + cpu_info(ip) + mem_info(ip) + disk_info(ip) + load_info(ip) #cpu、内存等信息,用列表返回
p = Machineinfo.objects.filter(host=ip.strip()) #Machineinfo这是一个模型类
if(p.exists()):
p.update(logic_core=machineinfo[1])
p.update(phy_cpu=machineinfo[2])
p.update(core_per_phy=machineinfo[3])
p.update(cpu_model=machineinfo[4])
p.update(phy_mem=machineinfo[5])
p.update(free_mem=machineinfo[6])
p.update(max_disk=machineinfo[7])
p.update(load=machineinfo[8])
else:
Machineinfo.objects.create(host=machineinfo[0],logic_core=machineinfo[1],phy_cpu=machineinfo[2],core_per_phy=machineinfo[3],cpu_model=machineinfo[4],
phy_mem=machineinfo[5],free_mem=machineinfo[6],max_disk=machineinfo[7],load=machineinfo[8])
#print machineinfo
#p.save()
def all_machine_info():
f = open(server_list)
lines = f.readlines()
for ip in lines:
a = threading.Thread(target = machine_info,args = (ip,))
a.start()
f.close()
#all_machine_info()
def html_machine_info(request):
all_machine_info()
result = Machineinfo.objects.all()
return render_to_response('machine_info.html',{'result': result})
功能:收集各机器的信息,用多线程实现。
用http://x.x.x.x/html_machine_info/访问的时候,all_machine_info()函数没有执行,不知道为什么?我手动执行是成功的。 |
|