本文整理汇总了Python中PyExpLabSys.common.loggers.ContinuousLogger.enqueue_point方法的典型用法代码示例。如果您正苦于以下问题:Python ContinuousLogger.enqueue_point方法的具体用法?Python ContinuousLogger.enqueue_point怎么用?Python ContinuousLogger.enqueue_point使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyExpLabSys.common.loggers.ContinuousLogger
的用法示例。
在下文中一共展示了ContinuousLogger.enqueue_point方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GasAlarmMonitor
# 需要导入模块: from PyExpLabSys.common.loggers import ContinuousLogger [as 别名]
# 或者: from PyExpLabSys.common.loggers.ContinuousLogger import enqueue_point [as 别名]
#.........这里部分代码省略.........
def main(self):
"""Main monitoring and logging loop"""
# Each iteration takes about 5 sec
while True:
# Log detectors
for detector_num in self.detector_numbers:
self.log_detector(detector_num)
# Log Vortex unit status (force log every 24 hours)
self.log_central_unit()
def log_detector(self, detector_num):
"""Get the levels from one detector and log if required"""
# Get detector info and levels for this detector
conf = self.detector_info[detector_num]
codename = self.identity_to_codename(conf.identity)
LOGGER.debug('Use detector {} \'{}\''.format(detector_num, codename))
levels = self.vortex.get_detector_levels(detector_num)
LOGGER.debug('Levels read: {}'.format(levels))
# Detector level
now = time.time()
# Always send to live socket
self.live_socket.set_point_now(codename, levels.level)
# Force log every 10 m
time_condition = \
now - self.detector_levels_last_times[detector_num] > 600
value_condition = \
abs(self.detector_levels_last_values[detector_num] - levels.level)\
>= self.trip_levels[detector_num]
if time_condition or value_condition:
LOGGER.debug('Send level to db trigged in time: {} or value: '
'{}'.format(time_condition, value_condition))
self.db_logger.enqueue_point(codename, (now, levels.level))
# Update last values
self.detector_levels_last_values[detector_num] = levels.level
self.detector_levels_last_times[detector_num] = now
else:
LOGGER.debug('Level logging condition false')
self.log_detector_status(detector_num, levels, conf)
def log_detector_status(self, detector_num, levels, conf):
"""Sub function to log single detector status"""
now = time.time()
# Force log every 24 hours
time_condition = \
now - self.detector_status_last_times[detector_num] > 86400
status = {'inhibit': levels.inhibit, 'status': levels.status,
'codename': conf.identity}
value_condition = \
(status != self.detector_status_last_values[detector_num])
# Check if we should log
if time_condition or value_condition:
check_in = time_condition and not value_condition
LOGGER.info('Send detector status to db trigged on time: {} or '
'value: {}'.format(time_condition, value_condition))
query = 'INSERT INTO status_b307gasalarm '\
'(time, device, status, check_in) '\
'VALUES (FROM_UNIXTIME(%s), %s, %s, %s);'
values = (now, detector_num, json.dumps(status), check_in)
self._wake_mysql()
self.db_cursor.execute(query, values)
# Update last values
self.detector_status_last_times[detector_num] = now