Skip to content

Commit 0af8896

Browse files
committed
Bumped v0.5.5
Signed-off-by: Vishal Rana <vr@labstack.com>
1 parent 2e64d35 commit 0af8896

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

labstack/log.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
import os
2+
import sys
23
import base64
34
import json
45
import time
56
import threading
7+
import traceback
68
from enum import IntEnum
7-
import asyncio
89
import requests
910
import arrow
11+
from apscheduler.schedulers.background import BackgroundScheduler
1012
from .common import API_URL
1113

1214
class _Log():
1315
def __init__(self, interceptor):
1416
self.path = '/log'
1517
self.interceptor = interceptor
16-
self._loop = None
18+
self._timer = None
1719
self.entries = []
1820
self.level = Level.INFO
1921
self.fields = {}
2022
self.batch_size = 60
2123
self.dispatch_interval = 60
2224

23-
async def _schedule(self):
24-
while True:
25-
try:
26-
await self._dispatch()
27-
except LogError as err:
28-
print('log error: code={}, message={}'.format(err.code, err.message))
29-
await asyncio.sleep(self.dispatch_interval)
30-
31-
async def _dispatch(self):
25+
# Automatically report uncaught fatal error
26+
def excepthook(type, value, trace):
27+
self.fatal(message=str(value), stack_trace=''.join(traceback.format_tb(trace)))
28+
sys.__excepthook__(type, value, trace)
29+
sys.excepthook = excepthook
30+
31+
def _dispatch(self):
3232
if len(self.entries) == 0:
3333
return
3434
try:
@@ -61,19 +61,18 @@ def _log(self, level, **kwargs):
6161
if level < self.level:
6262
return
6363

64-
if self._loop is None:
65-
self._loop = asyncio.new_event_loop()
66-
asyncio.set_event_loop(self._loop)
67-
self._loop.create_task(self._schedule())
68-
threading.Thread(target=self._loop.run_forever).start()
64+
if self._timer is None:
65+
self.timer = BackgroundScheduler()
66+
self.timer.add_job(self._dispatch, 'interval', seconds=self.dispatch_interval)
67+
self.timer.start()
6968

7069
kwargs['time'] = arrow.now().format('YYYY-MM-DDTHH:mm:ss.SSSZ')
7170
for k, v in self.fields.items():
7271
kwargs[k] = v
7372
kwargs['level'] = level.name
7473
self.entries.append(kwargs)
7574

76-
if len(self.entries) >= self.batch_size:
75+
if level == Level.FATAL or len(self.entries) >= self.batch_size:
7776
try:
7877
self._dispatch()
7978
except LogError as err:

setup.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
setup(
44
name='labstack',
5-
version='0.5.3',
6-
description='Official Python client library for the LabStack REST API',
5+
version='0.5.5',
6+
description='Official Python client library for the LabStack platform',
77
long_description='`<https://github.com/labstack/labstack-python>`_',
88
keywords='labstack cube email log mqtt store',
99
url='https://github.com/labstack/labstack-python',
@@ -12,6 +12,7 @@
1212
license='MIT',
1313
packages=['labstack'],
1414
install_requires=[
15+
'apscheduler==3.3.1',
1516
'requests==2.18.1',
1617
'arrow==0.10.0'
1718
],

0 commit comments

Comments
 (0)