|  | @@ -2,8 +2,9 @@ import json
 | 
	
		
			
				|  |  |  from mq_http_sdk.mq_exception import MQExceptionBase
 | 
	
		
			
				|  |  |  from mq_http_sdk.mq_producer import TopicMessage
 | 
	
		
			
				|  |  |  from mq_http_sdk.mq_client import MQClient
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +import traceback
 | 
	
		
			
				|  |  |  from application.common.log import Local
 | 
	
		
			
				|  |  | +from application.common.log import AliyunLogger
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class MQ(object):
 | 
	
	
		
			
				|  | @@ -18,20 +19,34 @@ class MQ(object):
 | 
	
		
			
				|  |  |                                    "nEbq3xWNQd1qLpdy2u71qFweHkZjSG")
 | 
	
		
			
				|  |  |          topic_name = topic_name+"_v2"
 | 
	
		
			
				|  |  |          self.producer = self.mq_client.get_producer(self.instance_id, topic_name)
 | 
	
		
			
				|  |  | +        self.aliyun_log = AliyunLogger(mode=self.mode, platform=self.platform)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def send_msg(self, video_dict):
 | 
	
		
			
				|  |  | +    def send_msg(self, video_dict, max_retries = 3):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          发送 mq,并且记录 redis
 | 
	
		
			
				|  |  |          :param video_dict:
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          strategy = video_dict["strategy"]
 | 
	
		
			
				|  |  |          platform = video_dict["platform"]
 | 
	
		
			
				|  |  | -        try:
 | 
	
		
			
				|  |  | -            msg = TopicMessage(json.dumps(video_dict))
 | 
	
		
			
				|  |  | -            message_key = "{}-{}-{}".format(platform, strategy, video_dict['out_video_id'])
 | 
	
		
			
				|  |  | -            msg.set_message_key(message_key)
 | 
	
		
			
				|  |  | -            re_msg = self.producer.publish_message(msg)
 | 
	
		
			
				|  |  | -            Local.logger(platform,strategy).info("Publish Message Succeed. MessageID:%s, BodyMD5:%s\n" %
 | 
	
		
			
				|  |  | -                                                  (re_msg.message_id, re_msg.message_body_md5))
 | 
	
		
			
				|  |  | -        except MQExceptionBase as e:
 | 
	
		
			
				|  |  | -            Local.logger(platform,strategy).error("Publish Message Fail. Exception:%s\n" % e)
 | 
	
		
			
				|  |  | +        self.aliyun_log = AliyunLogger(mode=strategy, platform=platform)
 | 
	
		
			
				|  |  | +        for retry in range(max_retries):
 | 
	
		
			
				|  |  | +            try:
 | 
	
		
			
				|  |  | +                msg = TopicMessage(json.dumps(video_dict))
 | 
	
		
			
				|  |  | +                message_key = "{}-{}-{}".format(platform, strategy, video_dict['out_video_id'])
 | 
	
		
			
				|  |  | +                msg.set_message_key(message_key)
 | 
	
		
			
				|  |  | +                re_msg = self.producer.publish_message(msg)
 | 
	
		
			
				|  |  | +                Local.logger(platform,strategy).info("Publish Message Succeed. MessageID:%s, BodyMD5:%s\n" %
 | 
	
		
			
				|  |  | +                                                      (re_msg.message_id, re_msg.message_body_md5))
 | 
	
		
			
				|  |  | +                return
 | 
	
		
			
				|  |  | +            except MQExceptionBase as e:
 | 
	
		
			
				|  |  | +                tb = traceback.format_exc()
 | 
	
		
			
				|  |  | +                # 如果是最后一次重试失败,记录日志
 | 
	
		
			
				|  |  | +                if retry == max_retries - 1:
 | 
	
		
			
				|  |  | +                    Local.logger(platform, strategy).error(
 | 
	
		
			
				|  |  | +                        f"Publish Message Fail after {max_retries} attempts. Exception: {e}\n{tb}"
 | 
	
		
			
				|  |  | +                    )
 | 
	
		
			
				|  |  | +                    self.aliyun_log.logging(
 | 
	
		
			
				|  |  | +                        code="5005",
 | 
	
		
			
				|  |  | +                        message=f"Publish Message Fail after {max_retries} attempts. Exception: {e}",
 | 
	
		
			
				|  |  | +                        data= tb
 | 
	
		
			
				|  |  | +                    )
 |