import xmlrpc.client
import zmq
import logging
import jsonpickle
import numpy as np
from mongoengine import connect
from .db.RecordAdapter import RecordAdapter
# from ..common.CountRecord import CountRecord
# from ..common.Record import RecordType, Record
# from ..common.PressureRecord import PressureType, PressureRecordg. list, tuple or set) of ch
# from ..common.TemperatureRecord import TemperatureRecord
from datetime import datetime
from time import time, sleep
import threading
import queue
[docs]class WriterToMongoDB():
"""
Writes incoming data to the MongoDB for storage
"""
def __init__(self, logger=None):
if logger is None:
logger = logging.getLogger()
self.logger = logger
self.ctx = zmq.Context()
self.sock = self.ctx.socket(zmq.SUB)
self.sock.connect("tcp://127.0.0.1:1234")
self.sock.subscribe("") # Subscribe to all topics
connect('muonic', host='localhost', port=27017,
username="root", password="muonic", authentication_source='admin')
[docs] def DBWriter(self):
while True:
msg = self.sock.recv_string()
obj = jsonpickle.decode(msg)
record = RecordAdapter.get(obj)
record.save()
[docs] def runDaemon(self):
writerTask = threading.Thread(target=self.DBWriter).start()