Изменил логику опроса

This commit is contained in:
Vladislav 2023-10-31 10:38:10 +03:00
parent 0ac7db0b0d
commit 2033cc1137

View File

@ -179,41 +179,38 @@ class Endpoint(Thread):
last_row = None last_row = None
while True: while True:
# время следующего опроса try:
need_time = last_query + scan_rate row = self.__mb_read_all_regs()
while True: if self.log_type == LOG_TYPE_ON_SCAN:
try: self.__insert_db_row(row)
row = self.__mb_read_all_regs() last_row = row
else:
if self.log_type == LOG_TYPE_ON_SCAN: equal = True
if last_row is None:
equal = False
else:
for i in range(0, len(last_row)):
if last_row[i] != row[i]:
equal = False
break
if not equal:
self.__insert_db_row(row) self.__insert_db_row(row)
last_row = row last_row = row
else: break
equal = True except Exception as ex:
if last_row is None: journal.log(f"Exception: {ex}")
equal = False
else:
for i in range(0, len(last_row)):
if last_row[i] != row[i]:
equal = False
break
if not equal:
self.__insert_db_row(row)
last_row = row
last_query = need_time
break
except Exception as ex:
journal.log(f"Exception: {ex}")
time.sleep(1) # небольшая задержка, чтоб не спамить запросами
need_time = datetime.now() + scan_rate
# вычислим время до следующего опроса и подождем # вычислим время до следующего опроса и подождем
# время следующего опроса
need_time = last_query + scan_rate
curr_time = datetime.now() curr_time = datetime.now()
if need_time > curr_time: if need_time > curr_time:
delta = need_time - curr_time delta = need_time - curr_time
time.sleep(delta.seconds + (delta.microseconds / 1000000)) time.sleep(delta.seconds + (delta.microseconds / 1000000))
last_query = need_time
else:
last_query = datetime.now()
def run(self): def run(self):
# запускаем клиента модбас # запускаем клиента модбас