return delta < 0
def do_details(self) -> bool:
+ logger.debug('No Bellevue city calendar items are interesting for articles...')
return False
def item_is_interesting_for_article(
self, title: str, description: str, item: xml.etree.ElementTree.Element
) -> bool:
+ logger.debug('No Bellevue city calendar items are interesting for articles...')
return False
for camera in camera_list:
filename = f"/timestamps/last_camera_motion_{camera}"
ts = os.stat(filename).st_ctime
- if ts != self.last_trigger_timestamp[camera] and (now - ts) < 10:
- print("Camera: %s, age %s" % (camera, (now - ts)))
+ age = now - ts
+ if ts != self.last_trigger_timestamp[camera] and age < 10:
+ print(f'Camera: {camera}, age {age}')
self.last_trigger_timestamp[camera] = ts
num_cameras_with_recent_triggers += 1
+
self.triggers_in_the_past_seven_min[camera] = 0
filename = f"/timestamps/camera_motion_history_{camera}"
with open(filename, "r") as f:
contents = f.readlines()
for x in contents:
- x.strip()
+ x = x.strip()
age = now - int(x)
if age < (60 * 7):
self.triggers_in_the_past_seven_min[camera] += 1
self.triggers_in_the_past_seven_min[camera] <= 4
or num_cameras_with_recent_triggers > 1
):
+ age = now - self.last_trigger_timestamp[camera]
priority = self.choose_priority(camera, int(age))
print(
f"{utils.timestamp()}: *** {camera}[{priority}] CAMERA TRIGGER ***"
from datetime import datetime
import functools
+import logging
+
+
+logger = logging.getLogger(__file__)
def invocation_logged(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
- now = datetime.now()
- timestamp = now.strftime("%d-%b-%Y (%H:%M:%S.%f)")
- print("%s(%s): Entered function" % (func.__name__, timestamp))
+ logger.debug(f'Entered {func.__qualname__}')
ret = func(*args, **kwargs)
- now = datetime.now()
- timestamp = now.strftime("%d-%b-%Y (%H:%M:%S.%f)")
- print("%s(%s): Exited function" % (func.__name__, timestamp))
+ logger.debug(f'Exited {func.__qualname__}')
return ret
return wrapper
def find_description(self, item: xml.etree.ElementTree.Element) -> str:
descr = item.findtext("description")
- source = item.findtext("source")
if descr is not None:
+ source = item.findtext("source")
if source is not None:
- descr = descr + " (source)"
+ descr = descr + f" ({source})"
else:
descr = ""
return descr
render_counts: collections.Counter,
render_times: Dict[str, np.array],
) -> None:
- logger.debug(
- f'renderer: Updating internal render statistics page.'
+ logger.info(
+ 'renderer: Updating internal render statistics page.'
)
with file_writer.file_writer(constants.render_stats_pagename) as f:
f.write(
-f'''
+'''
<CENTER>
<TABLE BORDER=0 WIDTH=95%>
<TR>
for r in renderer_catalog.get_renderers():
name = r.get_name()
now = time.time()
+ logger.info(f'renderer: Invoking {name}\'s render method.')
try:
r.render()
except Exception as e:
times = np.insert(times, 0, delta)
render_times[name] = times
if delta > 1.0:
- hdr = f'renderer: '
+ hdr = 'renderer: '
logger.warning(
f'''
{hdr} Warning: {name}'s rendering took {delta:5.2f}s.
# Update a page about internal stats of renderers.
renderer_update_internal_stats_page(last_render, render_counts, render_times)
- logger.debug('renderer: having a little nap...')
+ logger.info('renderer: having a little nap...')
time.sleep(constants.render_period_sec)
#!/usr/bin/env python3
import time
+import logging
import os
from datetime import datetime
import constants
+logger = logging.getLogger(__file__)
+
+
def timestamp() -> str:
t = datetime.fromtimestamp(time.time())
return t.strftime("%d/%b/%Y:%H:%M:%S%Z")
age = int(age)
return describe_duration(age)
except Exception as e:
+ logger.exception(e)
return "?????"
age = int(age)
return describe_duration_briefly(age)
except Exception as e:
+ logger.exception(e)
return "?????"
def minute_number_to_time_string(minute_num: int) -> str:
- """Convert minute number from start of day into hour:minute am/pm string."""
+ """Convert minute number from start of day into hour:minute am/pm
+ string."""
+
hour = minute_num // 60
minute = minute_num % 60
ampm = "a"