Esempio n. 1
0
class TestQueueStore(AsyncTestCase):
    def setUp(self):
        self.store = QueueStore()
        super(TestQueueStore, self).setUp()

    def test_submit(self):
        self.store.submit("data")
Esempio n. 2
0
class SystemLog:
    def __init__(self, maxsize=1000):
        self.maxsize = maxsize
        self.buffer = []
        self.q = Queue()
        self.datastore = QueueStore()
        Thread(target=self.readqueuetarget).start()

    def readqueuetarget(self):
        #https://stackoverflow.com/questions/51038793/error-happen-python3-6-while-using-tornado-in-multi-threading
        asyncio.set_event_loop(asyncio.new_event_loop())
        while True:
            li = self.q.get()
            self.buffer.append(li)
            message = json.dumps(li.toblob())
            self.datastore.submit(message)
            while len(self.buffer) > self.maxsize:
                self.buffer = self.buffer[1:]

    def log(self, li):
        self.q.put(li)

    def __repr__(self):
        return f"< systemlog < {len(self.buffer)} | {self.buffer[-50:]} > >"