溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python腳本采集服務(wù)器數(shù)據(jù)通過(guò)API提交到django web服務(wù)器,然后展示在頁(yè)面上

發(fā)布時(shí)間:2020-07-23 05:28:20 來(lái)源:網(wǎng)絡(luò) 閱讀:10400 作者:xxl714 欄目:開(kāi)發(fā)技術(shù)

采集服務(wù)器的信息的python程序

#coding:utf-8

import psutil

import urllib

import urllib.request

import urllib.parse

#import urllib2

import requests


#獲取數(shù)據(jù)

cpuData = psutil.cpu_times()

#處理數(shù)據(jù)

cpuMax = cpuData.user+cpuData.system+cpuData.idle

cpuUsed = cpuData.user+cpuData.system

cpuUse = cpuUsed/cpuMax


#將數(shù)據(jù)進(jìn)行打包

data = {"cpuUsed":cpuUse}

#sendData = urllib.parse.urlencode(data)

#sendData = sendData.encode('utf-8')

url = "http://192.168.52.129:8000/api/savecpu/"

#定義請(qǐng)求頭部

header = {

        "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",

    }


#定義請(qǐng)求

res =requests.post(url,data = data)

#req = urllib.request.Request(url,data = sendData,headers = header,method = 'POST')

#添加Header

#req.add_header(headers = header)

#發(fā)送請(qǐng)求

#ope = urllib.request.urlopen(req)

#打印結(jié)果

print(res.content.decode())

#print(ope.read())



django創(chuàng)建項(xiàng)目,創(chuàng)建app,我這里創(chuàng)建了一個(gè)api的應(yīng)用

api的urls.py文件配置信息


from django.conf.urls import url

from . import views


urlpatterns = [

     url(r'^index/$', views.index,name='index'),

     # url(r'^getinfo/$',views.getinfo,name='getinfo'),

     url(r"^savecpu/$", views.saveCpu,name='saveCpu'),

     url(r"^showcpu/$", views.show,name='showcpu'),


]



視圖文件

定義了2個(gè)函數(shù)


def saveCpu(request):

    """

        這個(gè)方法就是我們的接口方法,

        當(dāng)被請(qǐng)求時(shí)會(huì)將請(qǐng)求上來(lái)的數(shù)據(jù)存入數(shù)據(jù)庫(kù)

    """

    statue = {}

    if request.method == "POST" and request.POST: #檢測(cè)請(qǐng)求的方式是post,并且post請(qǐng)求有數(shù)據(jù)

        #request.POST 這個(gè)方法以字典的形式存放著當(dāng)前post請(qǐng)求的所有數(shù)據(jù)

        cpuUsed = request.POST["cpuUsed"] #使用類字典的取值方式取出傳遞上來(lái)的cpu使用率

        times = datetime.datetime.now() #獲取當(dāng)前時(shí)間

        cpuDatabase = SaveCpu() #實(shí)例化一個(gè)SaveCpu的模型實(shí)例

        cpuDatabase.used = cpuUsed #將數(shù)據(jù)賦值給模型

        cpuDatabase.time = times #同上

        cpuDatabase.save() #將模型映射到數(shù)據(jù)庫(kù)

        statue["statue"] = "success" #定義當(dāng)前接口狀態(tài)為保存成功

    else:

        statue["statue"] = "request method must be post" #定義當(dāng)前接口狀態(tài)為失敗

    return JsonResponse(statue) #將接口狀態(tài)返回給請(qǐng)求者


def show(request):

    cpu = SaveCpu.objects.all()

    return render(request,"api/showData.html",locals())

# Create your views here.


agent 端(python程序)不斷的采集到本機(jī)服務(wù)器的信息,通過(guò)api把數(shù)據(jù)傳遞給WEB服務(wù)器端(django),web server端接收到接口傳過(guò)來(lái)的數(shù)據(jù),把傳遞過(guò)來(lái)的數(shù)據(jù)按照格式存入數(shù)據(jù)庫(kù)保存數(shù)據(jù),從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),前端頁(yè)面展示數(shù)據(jù)


大概一個(gè)簡(jiǎn)單的server -》agent端就是這樣的



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI