1 """ Store zmq broadcasts to sqlite """
3 from datetime import datetime, timezone
4 from getopt import getopt
5 from logging import getLogger
6 from logging.handlers import SysLogHandler
12 from .evstore import initdb, stow
13 from .gps303proto import parse_message
14 from .zmsg import Bcast
16 log = getLogger("gps303/storage")
20 dbname = conf.get("storage", "dbfn")
21 log.info('Using Sqlite3 database "%s"', dbname)
24 zsub = zctx.socket(zmq.SUB)
25 zsub.connect(conf.get("collector", "publishurl"))
26 zsub.setsockopt(zmq.SUBSCRIBE, b"")
30 zmsg = Bcast(zsub.recv())
31 msg = parse_message(zmsg.packet)
32 log.debug("IMEI %s from %s at %s: %s", zmsg.imei, zmsg.peeraddr, datetime.fromtimestamp(zmsg.when).astimezone(tz=timezone.utc), msg)
41 except KeyboardInterrupt:
45 if __name__.endswith("__main__"):
46 runserver(common.init(log))