一、服務器端python
二、客戶端數據庫
class Server(models.Model): """ 服務器信息 """ # asset = models.OneToOneField('Asset') server_status_choices = ( (1, '上架'), (2, '在線'), (3, '離線'), (4, '下架'), ) server_status_id = models.IntegerField(choices=server_sta ... latest_date = models.DateTimeField(null=True,blank=True)
一、爲何服務器要有一個狀態?json
def server(request): if request.method == "GET": current_date = date.today() # 獲取今日未採集的主機列表 host_list = models.Server.objects.filter( Q(Q(latest_date=None)|Q(latest_date__date__lt=current_date)) & Q(server_status_id=2) ).values('hostname') host_list = list(host_list) return HttpResponse(json.dumps(host_list))
一、如何獲取今天的日期?api
>>> from datetime import date >>> date.today <built-in method today of type object at 0x00000000539FEA10> >>> date.today() datetime.date(2018, 7, 20)
二、我查找什麼?服務器
latest_date、latest_date__date__lt、server_status_id
三、若是時間等於null要不要取?post
獲取ui
四、今天凌晨一點採集一次8點要不要採集?
latest_date__date只取年月日(數據庫裏去的是年月日時分秒)spa
五、一次只採集200個如何處理server
Q(Q(latest_date=None)|Q(latest_date__date__lt=current_date)) & Q(server_status_id=2) ).values('hostname')[0:200]
class Server(object): def __init__(self,server_obj,basic_dict,board_dict): self.server_obj = server_obj self.basic_dict = basic_dict self.board_dict = board_dict def process(self,): # 更新server表 tmp = {} tmp.update(self.basic_dict['data']) tmp.update(self.board_dict['data']) 。。。 self.server_obj.latest_date = datetime.datetime.now()
self.server_obj.save() if record_list: models.ServerRecord.objects.create(server_obj=self.server_obj, content=';'.join(record_list))
一、等於空的時候要不要採集?blog
要採集,更新服務器信息的時候,處理完了把時間改一下
class SaltSshClient(BaseClient): def task(self,host): obj = PluginManager(host) server_dict = obj.exec_plugin() self.post_server_info(server_dict) def get_host_list(self): response = requests.get(self.api) # print(response.text) # [{"hostname": "c1. return json.loads(response.text) def exec(self): pool = ThreadPoolExecutor(10) host_list = self.get_host_list() for host in host_list: pool.submit(self.task,host['hostname'])