今天的内容是基于PythonFlask实现接口接收内存信息来进一步分享如何使用PythonFlask接收CPU的信息。 原理: 通过Python调用Shell脚本去执行CPU的相关信息,然后进行处理再请求Requests库来向后端定义好的接口来推送数据。Part1:收集端importosimportrequestsimportjsonimporttimeurlhttp:10。8。31。61:5555GetCpuResourcecpudata{}cpucmd〔catproccpuinfogrepprocessorwcl,catproccpuinfogrepphysicalidsortuniqwcl,catproccpuinfogrepcpucoresawkF{print4}sortwcl,uptimeawkF:{print5}〕defexeccmd():forcmdincpucmd:print(cmd)responseos。popen(cmd)if(processorincmd):cpudata〔logiccpu〕str(response。read())。replace(,)elif(physicalincmd):cpudata〔physicalcpu〕str(response。read())。replace(,)elif(coresincmd):cpudata〔cpucores〕str(response。read())。replace(,)elif(uptimeincmd):cpudata〔cpuload〕str(response。read())。replace(,)if(len(cpudata〔cpuload〕)3):responseos。popen(uptimeawkF:{print4})cpudata〔cpuload〕str(response。read())。replace(,)else:cpudata〔hostname〕str(os。popen(hostnameawkF。{print1}awkF{print2})。read())。replace(,)response。close()defhttpPost(datas):header{ContentType:applicationjson}respcontentrequests。post(urlurl,datajson。dumps(datas),headersheader)print(respcontent。text)ifnamemain:whileTrue:execcmd()httpPost(cpudata)time。sleep(3600) Part2:接收端CPU路由处理resource。route(GetCpuResource,methods〔POST〕)defGetCpuResource():接收来自linux上传的数据queryrequest。getjson()hostnamequery〔hostname〕logiccpuquery〔logiccpu〕physicalcpuquery〔physicalcpu〕cpucoresquery〔cpucores〕cpuloadquery〔cpuload〕createtimetime。strftime(YmdH:M:S,time。localtime())sqlinsertintocpuinfo(hostname,logiccpu,physicalcpu,cpucores,cpuload,createtime)VALUESdata(hostname,logiccpu,physicalcpu,cpucores,cpuload,str(createtime)enddata)sqlsqlendprint(sql)dbconndb()db。executesql(sql)data{code:200,message:success,status:10000}returnjson。dumps(data) Part3:展示端 这部分主要分为以下两块内容:第一块是页面请求templateelbreadcrumbseparatorelbreadcrumbitemiclasseliconlxcascadesiCPU信息elbreadcrumbitemelbreadcrumbelinputvmodelquery。hostnameplaceholder环境classhandleinputmr10clearableclearclearnameelinputelbuttontypeprimaryiconeliconsearchclickhandleSearch搜索elbuttoneltable:datatableDataborderclasstablerefmultipleTableheadercellclassnametableheadereltablecolumnpropidlabelIDwidth55aligncentereltablecolumneltablecolumnprophostnamelabel环境eltablecolumneltablecolumnproplogiccpulabel逻辑CPUeltablecolumneltablecolumnpropphysicalcpulabel物理CPUeltablecolumneltablecolumnpropcpucoreslabelCPU核数eltablecolumneltablecolumnpropcpuloadwidth255labelCPU负载Avg〔1min,5min,15min〕eltablecolumn!eltablecolumnpropavailablelabel可用!templatedefaultscope!eltag:typeavailableplus(scope。row。available)success?success:danger{{scope。row。available}}eltag!template!eltablecolumneltablecolumnpropcreatetimewidth160label创建时间eltablecolumneltableelpaginationsizechangehandleSizeChangecurrentchangehandleCurrentChange:currentpagequery。pageIndex:pagesizes〔5,10,20,30〕:pagesizequery。pageSizelayouttotal,sizes,prev,pager,next,jumper:totalparseInt(pageTotal)elpaginationtemplatestylescoped。handlebox{marginbottom:20}。handleselect{width:120}。handleinput{width:300display:}。table{width:100;fontsize:14}。red{color:ff0000;}。mr10{marginright:10}。tabletdthumb{display:margin:width:40height:40}style 第二块是后端请求处理resource。route(getCpuList,methods〔POST〕)defgetCpuList():fe的页面列表数据获取queryrequest。getjson()print(query)if(query〔hostname〕):sql1selectid,hostname,logiccpu,physicalcpu,cpucores,cpuload,createtimefromcpuinfoorderbyidDESClimitstr((query〔pageIndex〕1)query〔pageSize〕),str(query〔pageSize〕)countsqlselectcount()frommeminfocolumesqlselectidfrommeminfoelse:sql1selectid,hostname,logiccpu,physicalcpu,cpucores,cpuload,createtimefromcpuinfowherehostnamelikestr(query〔hostname〕)orderbyidDESClimitstr((query〔pageIndex〕1)query〔pageSize〕),str(query〔pageSize〕)countsqlselectcount()fromcpuinfowherehostnamelikestr(query〔hostname〕)orderbyidDESCcolumesqlselectidfromcpuinfosql2selectid,hostname,logiccpu,physicalcpu,cpucores,cpuload,createtimefromcpuinfodbconndb()listdatadb。getdata(sql1,sql2)dbconndb()resultdb。getdata(countsql,columesql)print(result)pageTotalresult〔0〕〔id〕print(listdata)print(pageTotal)data{listdata:listdata,pageTotal:pageTotal,code:200}returnjson。dumps(data) Part4:页面展示