import time from settings import settings from v2 import * from v2.ipregion import IpSearch, Ip2Region from multiprocessing import Lock ipsearch = IpSearch(Ip2Region, "ip2region.db") lock = Lock() def run(): db_client = CK(**settings.CK_CONFIG) sketch = Sketch(db_client) handler_event = HandlerEvent(db_client, settings.GAME, ipsearch) handler_user = HandlerUser(db_client, settings.GAME) transmitter = Transmitter(db_client, settings.GAME, sketch, lock) transmitter.add_source(handler_event, 10000, 60) transmitter.add_source(handler_user, 1000, 60) last_ts = int(time.time()) consumer = create_consumer(-1) for topic, msg in consumer(): # print(msg) type_ = msg['#type'] del msg['#type'] ts = int(time.time()) if 'user' in type_: # continue obj = getattr(handler_user, type_) handler_user.receive_data.append(UserAct(obj, msg)) if len(handler_user.receive_data) >= 1000 or last_ts + 60 < ts: last_ts = ts handler_user.execute() elif 'track' in type_: # continue obj = getattr(handler_event, type_) obj(msg) else: continue transmitter.run() if __name__ == '__main__': run()