Example #1
0
 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)
Example #2
0
 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()