运维开发里的数据动态获取和自动补录
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) if vm_info_dict !
千家信息网最后更新 2025年11月09日运维开发里的数据动态获取和自动补录vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) if vm_info_dict != None: physical_server_ip = vm_info_dict.hostip device_info_dict = physical_server_info.objects.get(ip=physical_server_ip) phy_contain_vms = virtual_machine_info.objects.filter(hostip=physical_server_ip) else: token = gettoken('xxxxx', 'xxxxx') vm_info_dict=getresponse('https://xxxxx/API/v1/GetServerInfo/'+vm_ip_addr, token) physical_server_ip = vm_info_dict.get("hostip") print(physical_server_ip) device_info_dict=getresponse('https://xxxxxx/API/v1/GetDeviceInfo/'+physical_server_ip, token)
整体的思路就是通过Django API获取虚拟机信息,如果不存在就通过API去访问获取。
这个问题看起来比较奇怪,按照错误的思路,应该是在exception的异常捕获部门来处理,这么做确实是可以的,但是如果要扩展逻辑,异常处理的逻辑就会越来越重,感觉怪怪的。
所以反复测试,也算是明白了,使用get的方式去获取数据,如果获取不到就会抛错,个人感觉这个接口还是不太友好,可以换一种方式,比如filter来实现,因为从表结构能够定位到这是一个主键或者唯一性索引。
所以代码的部分根据count的方式来做了调整,然后在这个基础上又做了改进,即如果在本地的数据库中不存在,则访问接口得到数据库,把数据库下沉到本地,整个过程对于我们使用是透明的,也算是一种比较友好的交互方式。
vm_info_dict_exists = virtual_machine_info.objects.filter(ip=vm_ip_addr).count() if vm_info_dict_exists >= 1:vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) physical_server_ip = vm_info_dict.hostip device_info_dict = physical_server_info.objects.get(ip=physical_server_ip)phy_contain_vms = virtual_machine_info.objects.filter(hostip=physical_server_ip)return_dict["device_info_dict"] = device_info_dictreturn_dict["vm_info_dict"] = vm_info_dictreturn_dict["phy_contain_vms"] = phy_contain_vms else:token = gettoken('xxxx', 'xxxxxx')vm_info_dict = getresponse('https://xxxxxx/API/v1/GetServerInfo/' + vm_ip_addr, token)physical_server_ip = vm_info_dict.get("hostip") print(physical_server_ip) device_info_dict = getresponse('https://xxxxxxxAPI/v1/GetDeviceInfo/' + physical_server_ip, token)return_dict["device_info_dict"] = device_info_dictreturn_dict["vm_info_dict"] = vm_info_dictvm_info = virtual_machine_info()......vm_info.memo = vm_info_dict.get("memo")vm_info.save()phy_exists = physical_server_info.objects.filter(ip=vm_info.hostip).count() if phy_exists == 0:phy_info = physical_server_info()phy_exists = physical_server_info.objects.filter(ip=vm_info.hostip).count() if phy_exists == 0:phy_info = physical_server_info()phy_info.update_date = device_info_dict.get("update_date")......phy_info.memo = device_info_dict.get("memo")phy_info.save()phy_contain_vms = virtual_machine_info.objects.filter(hostip=vm_info.hostip)return_dict["phy_contain_vms"] = phy_contain_vms
后续准备对这些信息做更进一步的改进,能够实现元数据的增量刷新,即数据发生变化的时候我会调用接口刷新数据到本地,否则还是保持不变。
数据
方式
接口
数据库
信息
思路
感觉
还是
逻辑
处理
更进一步
个人
代码
唯一性
基础
增量
就是
整体
时候
是在
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
乐清网络技术有限公司
大连5年软件开发工资多少
财务人员有必要学数据库吗
网络安全与执法能去公司吗
广州国联通信软件开发如何
汽车外观数据库
网络安全设备知乎
网络技术社区app
99伴奏软件开发
服务器管理的图片
邮件服务器 mx记录
lora+无线网络技术分析
登录入口的网络安全
软件开发管理投标
网络安全零基础学习
海康威视综合管理平台服务器作用
兴化市精一软件开发有限公司
歌唱祖国五线谱软件开发
web 开发最流行的数据库
淘宝点餐软件开发
数据库设计的模式有哪些
cad和网络安全哪个用处更大
分组层级关系数据库
伊春软件开发定制
南京软件开发 工作室
数据库及SQL的优化
代理服务器运行管理系统
全国姓名数据库
安徽租赁管理软件开发公司
广州交友软件开发定制