def __init__(self, process_handler=None): self.message_key_dict = {} self.message_config = DefaultConfig.MESSAGE_CONFIGS self.client_config = DefaultConfig.MQ_CLIENT_CONFIG self.select_connect = Select_Connnection( process_handler=process_handler) #handler unfinished self.is_start = False
class AsynHandlerRepository(object): ''' publish the message ''' def __init__(self, process_handler=None): self.message_key_dict = {} self.message_config = DefaultConfig.MESSAGE_CONFIGS self.client_config = DefaultConfig.MQ_CLIENT_CONFIG self.select_connect = Select_Connnection( process_handler=process_handler) #handler unfinished self.is_start = False def init_message(self, message_key, message_auth): ''' add authentication to a message_key ''' self.message_key_dict[message_key] = message_auth def process(self, message_key, message_body=None, **kw): ''' publish a message use the message_inkey ''' if not self.is_start: threading.Thread(target=self.select_connect.start).start() # self.select_connection.start() # self.select_connect.start() self.is_start = True message_body = AsynHandlerRepository._fill_message( message_key, message_body, **kw) message = {'message_key': message_key, 'message_body': message_body} self.select_connect.publish(message) # print 'publish', message_key, message_body\ return True def stop(self): self.select_connect.value.stop() @classmethod def _fill_message(cls, message_inkey, message_body=None, **kw): ''' fill the message ''' default_message_config = \ DefaultConfig.MESSAGE_CONFIGS.get('__default_message_config') DefaultConfig.MESSAGE_CONFIGS.setdefault(\ message_inkey, \ default_message_config) if message_body is None: message_body = {} for key, value in kw.items(): message_body[key] = value if len(message_body) == 0: raise MQError("empty message not allowed") return message_body
class AsynHandlerRepository(object): ''' publish the message ''' def __init__(self, process_handler=None): self.message_key_dict = {} self.message_config = DefaultConfig.MESSAGE_CONFIGS self.client_config = DefaultConfig.MQ_CLIENT_CONFIG self.select_connect = Select_Connnection(process_handler=process_handler) #handler unfinished self.is_start = False def init_message(self, message_key, message_auth): ''' add authentication to a message_key ''' self.message_key_dict[message_key] = message_auth def process(self, message_key, message_body=None, **kw): ''' publish a message use the message_inkey ''' if not self.is_start: threading.Thread(target=self.select_connect.start).start() # self.select_connection.start() # self.select_connect.start() self.is_start = True message_body = AsynHandlerRepository._fill_message(message_key, message_body, **kw) message = {'message_key': message_key, 'message_body': message_body} self.select_connect.publish(message) # print 'publish', message_key, message_body\ return True def stop(self): self.select_connect.value.stop() @classmethod def _fill_message(cls, message_inkey, message_body=None, **kw): ''' fill the message ''' default_message_config = \ DefaultConfig.MESSAGE_CONFIGS.get('__default_message_config') DefaultConfig.MESSAGE_CONFIGS.setdefault(\ message_inkey, \ default_message_config) if message_body is None: message_body = {} for key, value in kw.items(): message_body[key] = value if len(message_body) == 0: raise MQError("empty message not allowed") return message_body
class Test(unittest.TestCase): def process(self, message, body): print message, body def setUp(self): self.select_connection = Select_Connnection(process_handler=self.process) pass def tearDown(self): pass def testStart(self): pass def fun(self): message_key = 'test_message' for i in range(2000000): print i now = int(time.time()) msg = { 'id': now % (i + 1), 'name': 'producer %s' % (now % 10), 'phone': now, '__priority': (now % 3), } message = {'message_key': message_key, 'message_body': msg} self.select_connection.publish(message) time.sleep(0.1) self.select_connection.stop() def testPublish(self): threading.Thread(target=self.fun).start() self.select_connection.start() def testStop(self): # self.select_connection.stop() pass
class Test(unittest.TestCase): def process(self, message, body): print message, body def setUp(self): self.select_connection = Select_Connnection( process_handler=self.process) pass def tearDown(self): pass def testStart(self): pass def fun(self): message_key = 'test_message' for i in range(2000000): print i now = int(time.time()) msg = { 'id': now % (i + 1), 'name': 'producer %s' % (now % 10), 'phone': now, '__priority': (now % 3), } message = {'message_key': message_key, 'message_body': msg} self.select_connection.publish(message) time.sleep(0.1) self.select_connection.stop() def testPublish(self): threading.Thread(target=self.fun).start() self.select_connection.start() def testStop(self): # self.select_connection.stop() pass
def __init__(self, process_handler=None): self.message_key_dict = {} self.message_config = DefaultConfig.MESSAGE_CONFIGS self.client_config = DefaultConfig.MQ_CLIENT_CONFIG self.select_connect = Select_Connnection(process_handler=process_handler) #handler unfinished self.is_start = False
def setUp(self): self.select_connection = Select_Connnection( process_handler=self.process) pass
def setUp(self): self.select_connection = Select_Connnection(process_handler=self.process) pass