运维开发里的数据动态获取和自动补录
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) if vm_info_dict !
千家信息网最后更新 2026年11月01日运维开发里的数据动态获取和自动补录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安全错误
数据库的锁怎样保障安全
新华互联网科技学校
互联网科技活动banner
今日互联网科技
互联网科技深圳
北京互联网科技公司
奇酷互联网科技
为想互联网科技
深圳天众互联网科技公司
互联网科技大会案例
蓝色互联网科技
科技与互联网的利与弊
顶级互联网科技成果有哪些
互联网企业和科技型企业
花神(南京)互联网科技有限公司
互联网方面的科技前沿
怎样加入科技互联网
广州有谷有贝互联网科技有限公司
普陀区互联网教育科技管理办法
万物互联网智能科技
长沙渺峰互联网科技有限公司
A股互联网金融科技公司
互联网 科技
合肥互联网科技公司
礼当家互联网科技
广州善班互联网科技
互联网科技项目计划书材料类
深圳市优智互联网科技有限公司
无锡工业互联网科技有限公司
湖北辰鑫科技互联网
米泉互联网科技专业怎么样