code: def serv_forever(self, func):
          
          # 如果任务队列不为空则声明队列
          if self.task_queue:
              self.ch.queue_declare(
                  queue=self.task_queue, durable=self.durable)
          if self.store_queue:
              self.ch.queue_declare(
                  queue=self.store_queue, durable=self.durable)
  
          def callback(ch, method, properties, body):
              """
              amqp的回调函数
              :param ch: 链道
              :param method: 默认的方法
              :param properties: 默认
              :param body: 接收到的数据任务
              :return:
              """
              if self.prefetch_count > 1:
                  # 如果任务队列的并发执行数大于1，则启动线程
                  # 否则，单线程
                  task = _RabbitmqTask(func, (self, body), self.no_ack, ch, method, properties)
                  task.start()
              else:
                  func(self, body)
                  # 任务结束后，确认任务
                  if not self.no_ack:
                      self.ch.basic_ack(delivery_tag=self.method.delivery_tag)
  
          # 声明队列
          self.ch.basic_qos(prefetch_count=self.prefetch_count)
          self.ch.basic_consume(callback, queue=self.task_queue, no_ack=self.no_ack)
          # 启动消费者
          self.ch.start_consuming()
docs: 启动消费者服务程序
          :param func: 回调函数
          :return: