服务端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. NodeJS学习笔记 进阶 (9)express+cookie-parser:签名机制深入剖析(ok)

    个人总结:这篇文章讲解了express框架种cookie的使用,需要引用cookie-parser这个包.读完这篇文章需要10分钟. 摘选自网络 文章导读 cookie-parser是Express的 ...

  2. bzoj1270 BeijingWc2008 雷涛的小猫 DP

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1270 比较水的一道dp f1[i]为高度为i的时候的最大值 f2[i]为当前高度在第i棵树 ...

  3. Java Web Application——servlet

    概述 是一个部署于web服务器中的实现了servlet接口的Java类,用于响应web请求 Web容器(也称为servlet容器)本质上是与servlet交互的Web服务器的组件.Web容器负责管理s ...

  4. 洛谷—— P1926 小书童——刷题大军

    https://www.luogu.org/problem/show?pid=1926#sub 题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人 ...

  5. 《R实战》读书笔记二

    第一章 R简单介绍 本章概要 1安装R 2理解R语言 3执行R程序 本章所介绍的内容概括例如以下. 一个典型的数据分析步骤如图1所看到的. 图1:典型数据分析步骤 简而言之,现今的数据分析要求我们从多 ...

  6. vector容器的实现

    简单实现了构造.析构.push_back.pop_back.operator=.operator[].clear等函数 template<class T> class my_vector ...

  7. Please ensure that adb is correctly located at &#39;D:\Android\android-sdk\platform-tools\adb.exe&#39; and

    1.启动任务管理器 2.找到百度安全组件杀掉进程. 3.一般都是组件给禁止了.

  8. shrio 登录/退出

    身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...

  9. Json 序列化以及反序列化的三种方式(二)

    1.什么是JSON? Json[javascript对象表示方法],它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,并且它很容易被计算机转化和生成,它是完全独立于语言的 2.Json支持下 ...

  10. BZOJ 4430 Guessing Camels

    Description Jaap, Jan, and Thijs are on a trip to the desert after having attended the ACM ICPC Worl ...