CMDB服务器管理系统【s5day89】:采集资产之汇报信息
1、服务器端收到的数据和客户端的数据不一样
print(request.post)

少发了,还是少取了,说明根本没有把数据全发过来
print(request.body)

1、只把字典的key给我发过来的
答:这是正常的,这种方式去提交的时候,伪造的是from表单的提交
2、你发数据向后台发点什么?
只可能存字符串,不可能存在字典
2、post是怎样把请求发到后台的
要发怎么发?把字典转换成字符串,必须这么发,因为后台它只认识这种请求头,根据这种结构进行解析
username: 'xxx'
username: '123'
hobby: [1,2,3,4]
hobby: {} $ajax({
url: 'xx',
data:{
k1: 1,
k2: "xx"
k2: [1,2,3,4],
k2: JSON.stringfy({'kk1':'xxx'}),
} }) #Form表单提交和默认提交 + request.post(data='xxx')
#k1=1&k2=xx, content-type: annotation/x-www-form-urlencoded
后台: request.POST,
- annotation/x-www-form-urlencoded
- 根据这种结构解析: k1=1&k2=xx #定义请求头:
$ajax({
url: 'xx',
headers:{'content-type':'application/json'},
data: JSON.stringfy({k1':1,k2:"xx",k2: [1,2,3,4],}),
}) #"{k1':1,k2:"xx",k2: [1,2,3,4],}", content-type: application/json 后台: request.POST,
- annotation/x-www-form-urlencoded
- 根据这种结构解析: k1=1&k2=xx
request.body
具体代码
class BaseClient(object):
def __init__(self):
self.api = settings.API def post_server_info(self,server_dict):
# requests.post(self.api,data=server_dict) # 1. k=v&k=v, 2. content-type: application/x-www-form-urlencoded
response = requests.post(self.api,json=server_dict) # 1. 字典序列化;2. 带请求头 content-type: application/json def exec(self):
raise NotImplementedError('必须实现exec方法')
3、线程池
1、引子:
如果是100台每台等2分钟,ssh是串行要等200分钟
2、代码如下:
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
import time def task(arg1,arg2):
print(arg1,arg2)
time.sleep(1) pool = ProcessPoolExecutor(20) for i in range(100):
pool.submit(task,i,i)
3、关于线程池的说明:
1、刚开始我们不知道多少个池子,我就默认创建20个
2、现在他没有执行,当我们用的时候边用边执行
4、进程池
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
import time def task(arg1,arg2):
print(arg1,arg2)
time.sleep(1) pool = ThreadPoolExecutor(20) for i in range(100):
pool.submit(task,i,i)
小结:
1、python2默认没有线程池,只有进程池,python3就有
2、通过一行代码给它改成进程池
3、不要用python2以前里有进程池,很麻烦
CMDB服务器管理系统【s5day89】:采集资产之汇报信息的更多相关文章
- CMDB服务器管理系统【s5day88】:采集资产之Agent、SSH和Salt模式讲解
在对获取资产信息时,简述有四种方案. 1.Agent (基于shell命令实现) 原理图 Agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库 优点: ...
- CMDB服务器管理系统【s5day87】:需求讨论-设计思路
自动化运维平台愿景和服务器管理系统背景 服务器管理系统 管理后台示例 需求和设计 为什么开发服务器管理系统? 背景: 原来是用Excel维护服务器资产,samb服务[多个运维人员手动维护] 搭建运维自 ...
- CMDB服务器管理系统【s5day91】:如何实现允许临时修改主机名
一.sn号唯一 & 如何实现允许临时修改主机名 1.物理机 1.sn,物理机唯一 2.后台管理: 买服务器,清单:SN号,硬盘,内存... 作业:python 读取excel,xldt 3.资 ...
- CMDB服务器管理系统【s5day92】:服务器管理回顾
一.服务器管理回顾 1.requests 发送: requests.post(url='',data=,json=) requests.get() Django接受: request.POST, co ...
- CMDB服务器管理系统【s5day89】:采集资产之整合资产
1.业务逻辑单独写 1.代码目录结构 2.client.py from src.plugins import PluginManager class BaseClient(object): def p ...
- CMDB服务器管理系统【s5day91】:资产采集相关问题
资产采集唯一标识和允许临时修改主机名 class AgentClient(BaseClient): def exec(self): obj = PluginManager() server_dict ...
- CMDB服务器管理系统【s5day89】:部分数据表结构-资产入库思路
1.用django的app作为统一调用库的好处 1.创建repository app截图如下: 2.好处如下: 1.app的本质就是一个文件夹 2.以后所有的app调用数据就只去repository调 ...
- CMDB服务器管理系统【s5day88】:采集资产-文件配置(一)
django中间件工作原理 整体流程: 在接受一个Http请求之前的准备 启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器. ...
- CMDB服务器管理系统【s5day88】:采集资产-文件配置(二)
上节疑问: 1.老师我们已经写到global_settings里了,为什么还要写到__init__.py setting 这的作用是为了:整合起两个的组合global_settings和setting ...
随机推荐
- springboot运行时该注意的地方
1.SpringBoot的入口类一定要放在所有类的上一层,也就是要包含所有子包中的类 springBoot在启动时才会加载所有子包中的所有组件 否则会出现启动成功但是访问不到的情况: This app ...
- 如何使用PowerDesigner建表
说明 个人认为,直接使用数据库管理工具如Navicat直接建表,如果后期需要进行库的迁移,不是那么方便,不如直接在PowerDesigner里面建表,更自由一些 版本:PowerDesigner15 ...
- Redis操作hash
来自:http://www.cnblogs.com/alex3714/articles/6217453.html Hash操作 hash表现形式上有些像pyhton中的dict,可以存储一组关联性较强 ...
- Pyqt5-Python应用开发——第一个小程序的实现
环境:python 3.6.6 编辑器:pycharm 其他:QtDesigner:Qt Designer,是一个直观可见的全方位 GUI 构造器,它所设计出来的用户界面能够在多种平台上使用.它是 Q ...
- docker其他参考资料
https://yeasy.gitbooks.io/docker_practice/image/build.html https://blog.csdn.net/weixin_42596342/art ...
- 文本分类实战(七)—— Adversarial LSTM模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- B. Obtaining the String(模拟)
比较水的模拟 思路:就是模拟题意 注意:把数组开大点,开始wa了几次就是这个原因 #include<iostream> #include<string> #include< ...
- 20145236《网络对抗》进阶实验——64位Ubuntu 17.10.1 ROP攻击
20145236<网络对抗>进阶实验--64位Ubuntu 17.10.1 ROP攻击 基础知识 ROP攻击 ROP全称为Retrun-oriented Programmming(面向返回 ...
- Struts2的核心——拦截器
虽然以前已经学了很多的拦截器,但是在这里还是想重头梳理一下所有有关拦截器的知识,尤其是struts2中的拦截器 1:拦截器是什么? java里的拦截器是动态拦截Action调用的对象.它提供了一种机制 ...
- C++ 标准库之 iomanip 、操作符 ios::fixed 以及 setprecision 使用的惨痛教训经验总结
本菜鸡自从退役之后就再也没怎么敲过 C++ 代码,在 C++ 语言下,求解关于浮点数类型的问题时,之前有碰到类似的情况,但是似乎都没有卡这块的数据,基本上用一个 setprecision 函数保留几位 ...