服务端api 对发送来的数据进行处理,并返回结果,首先要创建一个Django项目

第一步,就是写URL路由在分支中写url

api 主路由

from django.conf.urls import url,include
from django.contrib import admin urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include('api.urls')),

api路由

from django.conf.urls import url
from api import views urlpatterns = [ url(r'^asset',views.asset),
]

试图views,试图函数 ,这里我使用 的csrf的忽略校验 和 接收的是PSOT请求,josn 反序列化

from django.views.decorators.csrf import csrf_exempt  
from django.shortcuts import render,HttpResponse,redirect,reverse
from django.views.decorators.csrf import csrf_exempt
import json
# Create your views here.
@csrf_exempt
def asset(request):
print(request.body) #原始数据
print(request.POST) #url编码的格式 "hostname=c1.com&memory=...."
ret =json.loads(request.body.decode('utf-8'))
print(ret)
return HttpResponse("接受成功")

客户端测试 脚本

#!/usr/bin/env python
# -*- coding:utf-8 -*- import requests
import json
def agent():
''' :return:
'''
import subprocess
disk = subprocess.getoutput('dir')
info = {'hostname':'127.0.0.1','cpu':"cpu..",'meorey':'内存','disk':disk}
r1= requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1)
print(r1.text) agent()

服务端接受数据打印成功

客户端接收成功

#####################错误信息  traceback.format_exc 错误堆栈信息

#!/usr/bin/env python
# -*- coding:utf-8 -*- import traceback def f1():
int('asd')
return 123 def run():
try:
ret = f1()
print(ret)
except Exception as e:
# print(e)
ret = traceback.format_exc()
print(ret, type(ret)) run()

单进程执行数据采集函数实例:

def ssh():
r1= requests.get(url='http://127.0.0.1:8000/api/asset') # print(r1.text,type(r1.text)) #返回str 类型
# print(r1.json(),type(r1.json())) #直接反序列化
# print(r1.content,type(r1.content)) #返回bytes 类型
host_list = r1.json()
for host in host_list:
#连接每一台服务器远程执行(ssh ,salt)执行命令拿到资产信息
info = {
'hostname':host,
'disk':'diskinfo',
'cpu':'cpuinfo',
'memory':'memoryinfo'
}
r1 = requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1) ssh()

多线程数据采集实现

#!/usr/bin/env python
# -*- coding:utf-8 -*- import requests
import json
def agent():
''' :return:
'''
import subprocess
disk = subprocess.getoutput('dir')
info = {'hostname':'127.0.0.1','cpu':"cpu..",'meorey':'内存','disk':disk}
r1= requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1)
print(r1.text) def task(host):
#创建任务
# 连接每一台服务器远程执行(ssh ,salt)执行命令拿到资产信息
info = {
'hostname': host,
'disk': 'diskinfo',
'cpu': 'cpuinfo',
'memory': 'memoryinfo'
}
r1 = requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1) def ssh():
r1= requests.get(url='http://127.0.0.1:8000/api/asset') # print(r1.text,type(r1.text)) #返回str 类型
# print(r1.json(),type(r1.json())) #直接反序列化
# print(r1.content,type(r1.content)) #返回bytes 类型
host_list = r1.json()
from concurrent.futures import ThreadPoolExecutor
pool = ThreadPoolExecutor(10)
for host in host_list:
#连接每一台服务器远程执行(ssh ,salt)执行命令拿到资产信息
pool.submit(task,host) ssh()

总结:auto_client

    agnet模式:

      1、采集资产信息

      2、使用requests模块发POST请求提交的资产信息  

    ssh模式:

      1、获取未采集的主机列表

      2、远程连接(ssh)上指定的主机,执行命令采集资产信息

      3、使用requests模块发POST请求提交的资产信息

    salt模式:

      1、获取未采集的主机列表

      2、远程连接(salt)上指定的主机,执行命令采集资产信息

      3、使用requests模块发POST请求提交的资产信息

CMDB学习之五服务端api的更多相关文章

  1. .Net分布式异常报警系统-客户端及服务端API

    客户端 客户端的作用就是捕获未处理异常, 发送异常到服务端. 关于捕获未处理异常的方法参考 http://www.cnblogs.com/youring2/archive/2012/04/25/246 ...

  2. 安卓推送——个推服务端api使用误区

    首先你需要在个推开放着平台上注册你的应用,以及获得以下几个必要的值APPID |APPKEY | MASTERSECRET,本文假设你已经完成上述步骤以及完成客户端SDK的集成. 原理 个推服务端ap ...

  3. Identity4实现服务端+api资源控制+客户端请求

    准备写一些关于Identity4相关的东西,最近也比较对这方面感兴趣.所有做个开篇笔记记录一下,以便督促自己下一个技术方案方向 已经写好的入门级别Identity4的服务+api资源访问控制和简单的客 ...

  4. JAVA通过http访问其他服务端API

    项目要实现这么一个功能,用户通过点击按钮,通过axios来访问python的API(算法,java不好做)得到一个结果存储到数据库并且返回到页面. 但是python不是在tomcat上面运行的,所以不 ...

  5. 服务端API 工作经验(没有工作的是体会不到的)

    1.慢慢了解以下内容 [{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},]-- 数据 data 服务端API 状态代码(01代表成功) message ...

  6. C#开发BIMFACE系列6 服务端API之获取文件信息

    在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...

  7. C#开发BIMFACE系列4 服务端API之源上传文件

    在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...

  8. C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...

  9. C#开发BIMFACE系列7 服务端API之获取文件信息列表

    系列目录     [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...

随机推荐

  1. 洛谷3933 Chtholly Nota Seniorious 二分答案+贪心

    题目链接 题意 给你一个N*M的矩阵 (N,M <=2000)  把他分成两部分 使两部分的极差较大的一个最小  求这个最小值.然后分矩阵的要求是:每个部分内部的方块之间,可以通过上下左右相互到 ...

  2. NOIP 2012 疫情控制(二分+贪心+倍增)

    题解 二分时间 然后一个显然的事是一个军队向上爬的越高它控制的点越多 所以首先军队尽量往上爬. 当一个军队可以爬到根节点我们记录下它的剩余时间T和它到达根结点时经过的根节点的子节点son. 当一个军队 ...

  3. java解析json文件(省,市,区)

    [{"code":"11","name":"北京市"},{"code":"12" ...

  4. 紫书 习题 10-9 UVa 294(正约数个数)

    一个数的正约数个数等于这个数的质因数分解后 每一项幂+1的积 因为每个质因数的幂可以为0, 1, 2--(注意可以为0) 所以就每个质因数配一个幂任意组合就可得一个正因数,根据乘法原理可得正约数个数. ...

  5. [APIO2009]会议中心(贪心)

    P3626 [APIO2009]会议中心 题目描述 Siruseri 政府建造了一座新的会议中心.许多公司对租借会议中心的会堂很 感兴趣,他们希望能够在里面举行会议. 对于一个客户而言,仅当在开会时能 ...

  6. 【习题 8-20 UVA-1620】Lazy Susan

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 会发现,如果把连续4个数字进行一次翻转的话. 假设这连续的4个数字的逆序数为x; 那么翻转过后,逆序数就会变成6-x; (最多6个逆 ...

  7. CodeForces 316c1 Tidying Up

    Tidying Up Time Limit: 4000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Orig ...

  8. HTML学习----------DAY1 第一节

    什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...

  9. SharePoint创建Alternate Access Mapping (AAM)备用訪问映射

    SharePoint创建Alternate Access Mapping (AAM)备用訪问映射         SharePoint的仓库是SQL Server中的内容数据库.这些数据库储存着组织全 ...

  10. mpvue 开发小程序

    转换成vue语法, 小程序中原生的事件用@ 原生的属性用: