diff --git a/Dockerfile b/Dockerfile index 145c1339ec410e7d3b0af02e0aa1994d945c6913..591f783b4bc570d52cd63187aaf6246991589307 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 5ff5e32093c84a8ccc0d34ae484760c99667b5b8..3d1d8035b83b08a1c0c719278749d59468150b29 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