Remove unused imports, and add VAR_DIR const, to place position and dump.pickle somewhere outside CWD in preparation for running this as a service:)

This commit is contained in:
2024-06-30 17:15:53 +02:00
parent 3be6d5bcfe
commit 770b122ece

View File

@@ -4,18 +4,18 @@ import signal
import os import os
import io import io
import sys import sys
import stat
from multiprocessing import Process, Queue from multiprocessing import Process, Queue
import socketserver import socketserver
import threading
import queue import queue
from datetime import datetime, timedelta from datetime import datetime
import logging import logging
import time import time
import pickle import pickle
from setproctitle import setproctitle from setproctitle import setproctitle
VAR_DIR = '/var/cache/routerstats/'
logging.basicConfig( logging.basicConfig(
format='%(asctime)s %(funcName)20s %(levelname)-8s %(message)s', format='%(asctime)s %(funcName)20s %(levelname)-8s %(message)s',
level=logging.INFO, level=logging.INFO,
@@ -107,7 +107,7 @@ def shutdown_filefetcher(output_queue, input_file):
'''Cleanly close filehandles, save log position and queue contents''' '''Cleanly close filehandles, save log position and queue contents'''
cur_pos = input_file.tell() cur_pos = input_file.tell()
input_file.close() input_file.close()
with open('position', 'w') as output_file: with open(VAR_DIR + 'position', 'w') as output_file:
logging.debug('Saving current position ' + str(cur_pos)) logging.debug('Saving current position ' + str(cur_pos))
output_file.write(str(cur_pos)) output_file.write(str(cur_pos))
dump_queue(output_queue) dump_queue(output_queue)
@@ -155,6 +155,9 @@ def parse_line(input_line: str) -> dict:
#This might happen around first of january #This might happen around first of january
logline_time = logline_time.replace(year=logline_time.year - 1) logline_time = logline_time.replace(year=logline_time.year - 1)
timestamp = int(logline_time.timestamp()) timestamp = int(logline_time.timestamp())
#FIXME Make this configurable somehow
if zone in ['loc-net', 'router-net']:
zone = 'loc-net'
retval = (timestamp, zone) retval = (timestamp, zone)
logging.debug('Parsed line to ' + str(retval)) logging.debug('Parsed line to ' + str(retval))
return retval return retval
@@ -175,7 +178,7 @@ def dump_queue(queue_to_dump: Queue):
if out_list: if out_list:
logging.debug('Saving ' + str(len(out_list)) + ' entries to dump.pickle') logging.debug('Saving ' + str(len(out_list)) + ' entries to dump.pickle')
to_save = pickle.dumps(out_list) to_save = pickle.dumps(out_list)
with open('dump.pickle', 'wb') as output_file: with open(VAR_DIR + 'dump.pickle', 'wb') as output_file:
bytes_written = output_file.write(to_save) bytes_written = output_file.write(to_save)
logging.debug('Saved ' + str(len(out_list)) + ' entries, taking ' + str(bytes_written) + ' bytes') logging.debug('Saved ' + str(len(out_list)) + ' entries, taking ' + str(bytes_written) + ' bytes')
@@ -188,7 +191,7 @@ def signal_handler(signum, frame):
def load_pickled_file(output_queue): def load_pickled_file(output_queue):
'''Load queue contents from pickled queue structure''' '''Load queue contents from pickled queue structure'''
#Does our dump file exist? #Does our dump file exist?
loadfile = 'dump.pickle' loadfile = VAR_DIR + 'dump.pickle'
if os.path.isfile(loadfile): if os.path.isfile(loadfile):
size = os.stat(loadfile).st_size size = os.stat(loadfile).st_size
logging.debug(loadfile + ' exists, loading ' + str(size) + ' bytes.') logging.debug(loadfile + ' exists, loading ' + str(size) + ' bytes.')
@@ -206,8 +209,8 @@ def load_pickled_file(output_queue):
def load_start_pos(logfile): def load_start_pos(logfile):
'''Read start position from file, if it exists''' '''Read start position from file, if it exists'''
#Do we have any position we want to start from? #Do we have any position we want to start from?
if os.path.isfile('position'): if os.path.isfile(VAR_DIR + 'position'):
with open('position', 'r') as input_file: with open(VAR_DIR + 'position', 'r') as input_file:
tmp_start_pos = input_file.readline() tmp_start_pos = input_file.readline()
try: try:
tmp_start_pos = int(tmp_start_pos) tmp_start_pos = int(tmp_start_pos)