From 3cfcd1c6c08af3090187a4b4956f6f26f4e0256e Mon Sep 17 00:00:00 2001 From: Tommi Penttinen <tmpent@utu.fi> Date: Wed, 23 Jun 2021 18:21:32 +0300 Subject: [PATCH] Add support for a hearbeat log --- Dockerfile | 2 +- websocketd_server.py | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 145c133..591f783 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,4 +10,4 @@ COPY . /usr/src/app # For Django EXPOSE 8080 -CMD ["websocketd", "--port", "8080", "python3", "/usr/src/app/websocketd_server.py", "/opt/persist/data.csv"] +CMD ["websocketd", "--port", "8080", "python3", "/usr/src/app/websocketd_server.py", "/opt/persist/data", "/opt/persist/hearbeat.log"] diff --git a/websocketd_server.py b/websocketd_server.py index 5ff5e32..3d1d803 100644 --- a/websocketd_server.py +++ b/websocketd_server.py @@ -1,17 +1,29 @@ #!/usr/bin/env python3 import datetime +import json import sys def main(): - output_file = sys.argv[1] - print("Saving output to %s" % output_file) + data_prefix, heartbeat_file = sys.argv[1:] + print("Using file prefix %s for data" % data_prefix) + print("Using heartbeat file %s" % heartbeat_file) for line in sys.stdin: - entry = line.strip() + ',' + datetime.datetime.now().isoformat() - with open(output_file, 'a') as f: - f.write(entry + '\n') - print(entry) + line = line.strip() + if line.startswith('PING'): + # Let's not care about the possible simultaneous writes. It's just a heart beat. + with open(heartbeat_file, 'a') as f: + f.write(line + '\n') + continue + + entry = line + ',' + datetime.datetime.now().isoformat() + tms, direction, vehicle_class, *rest = line.split(',') + print(json.dumps({'tmsNumber': int(tms), 'direction': int(direction), 'vehicle_class': int(vehicle_class)})) sys.stdout.flush() + data_file = '%s_%d.csv' % (data_prefix, int(tms)) + with open(data_file, 'a') as f: + f.write(entry + '\n') + if __name__ == '__main__': main() \ No newline at end of file -- GitLab