def publish( self, msg: typing.Union[str, dict], priority_control_config: PriorityConsumingControlConfig = None): if isinstance(msg, str): msg = json.loads(msg) if self.publish_params_checker: self.publish_params_checker.check_params(msg) task_id = f'{self._queue_name}_result:{uuid.uuid4()}' msg['extra'] = extra_params = { 'task_id': task_id, 'publish_time': round(time.time(), 4), 'publish_time_format': time.strftime('%Y-%m-%d %H:%M:%S') } if priority_control_config: extra_params.update(priority_control_config.to_dict()) t_start = time.time() decorators.handle_exception(retry_times=10, is_throw_error=True, time_sleep=0.1)( self.concrete_realization_of_publish)( json.dumps(msg, ensure_ascii=False)) self.logger.debug( f'向{self._queue_name} 队列,推送消息 耗时{round(time.time() - t_start, 4)}秒 {msg}' ) with self._lock_for_count: self.count_per_minute += 1 self.publish_msg_num_total += 1 if time.time() - self._current_time > 10: self.logger.info( f'10秒内推送了 {self.count_per_minute} 条消息,累计推送了 {self.publish_msg_num_total} 条消息到 {self._queue_name} 中' ) self._init_count() return RedisAsyncResult(task_id)
def publish(self, msg: typing.Union[str, dict]): if isinstance(msg, str): msg = json.loads(msg) if self._is_add_publish_time: # msg.update({'publish_time': time.time(), 'publish_time_format': time_util.DatetimeConverter().datetime_str}) msg.update({ 'publish_time': round(time.time(), 4), }) t_start = time.time() decorators.handle_exception(retry_times=10, is_throw_error=True, time_sleep=0.1)( self.concrete_realization_of_publish)( json.dumps(msg)) self.logger.debug( f'向{self._queue_name} 队列,推送消息 耗时{round(time.time() - t_start, 4)}秒 {msg}' ) with self._lock_for_count: self.count_per_minute += 1 self.publish_msg_num_total += 1 if time.time() - self._current_time > 10: self.logger.info( f'10秒内推送了 {self.count_per_minute} 条消息,累计推送了 {self.publish_msg_num_total} 条消息到 {self._queue_name} 中' ) self._init_count()