收集事件名

This commit is contained in:
wuaho 2021-09-09 21:08:27 +08:00
parent 628f993e1b
commit c81abb3006
2 changed files with 10 additions and 21 deletions

View File

@ -7,26 +7,12 @@ class EventAttr:
def __init__(self, rdb: Redis): def __init__(self, rdb: Redis):
self.rdb = rdb self.rdb = rdb
def get_event_attr(self, key): def set_event_name(self, key, *data):
attr = self.event_attr.get(key)
if not attr:
self.event_attr[key] = self.rdb.smembers(key) or set()
return set(self.event_attr[key])
def set_event_attr(self, key, *data):
self.rdb.sadd(key, *data) self.rdb.sadd(key, *data)
self.event_attr[key] = data
def check_attr(self, db, data): def add_event(self, db, data):
event_name = data.get('#event_name') event_name = data.get('#event_name')
if not event_name: if not event_name:
return return
key = f'{db}_event_set'
key = f'{db}_event_{event_name}' self.set_event_name(key, event_name)
attr = self.get_event_attr(key)
data_attr = set(data)
extra_attr = data_attr - attr
if extra_attr:
self.set_event_attr(key, *extra_attr)

View File

@ -104,10 +104,13 @@ class Transmitter:
def check_table(self, db, tb, data): def check_table(self, db, tb, data):
[self.sketch.alter_table(db, tb, item) for item in data] [self.sketch.alter_table(db, tb, item) for item in data]
def set_event_attr(self, db, tb, data):
def collect_event(self, db, tb, data):
if tb != 'event': if tb != 'event':
return return
[self.event_attr.check_attr(db, item) for item in data]
[self.event_attr.add_event(db, item) for item in data]
def check_type(self, db, tb, data): def check_type(self, db, tb, data):
struct_dict = self.sketch.struct_dict[f'{db}_{tb}'] struct_dict = self.sketch.struct_dict[f'{db}_{tb}']
@ -131,7 +134,7 @@ class Transmitter:
data = [self.flat_data(x) for x in buffer.values()] data = [self.flat_data(x) for x in buffer.values()]
self.check_table(self.db_name, tb, data) self.check_table(self.db_name, tb, data)
self.check_type(self.db_name, tb, data) self.check_type(self.db_name, tb, data)
self.set_event_attr(self.db_name, tb, data) self.collect_event(self.db_name, tb, data)
self.__send(self.db_name, tb, [json.dumps(item) for item in data]) self.__send(self.db_name, tb, [json.dumps(item) for item in data])
except Exception as e: except Exception as e:
self.log.error(e) self.log.error(e)