Chinaunix

标题: django调用函数不成功 [打印本页]

作者: yu330    时间: 2013-05-24 16:37
标题: django调用函数不成功
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()函数没有执行,不知道为什么?我手动执行是成功的。
作者: loveguo7    时间: 2013-05-27 11:12
我对收集系统信息的过程比较感兴趣...


   
作者: easedays    时间: 2013-05-27 11:24
几个建议:

1. 开启debug看看
2. 插入print看看执行过程
3. 推荐pstutil模块
作者: yu330    时间: 2013-05-27 14:24
回复 3# easedays

debug已开,all_machine_info函数能正常执行,这里不能执行是不是跟多线程有关?

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2