code: def debug(self, body, message):#pylint:disable=arguments-differ,unused-argument
          
          is_debug = body.get('__debug__', False) if isinstance(body, dict) else False
          if not is_debug:
              yield
          else:
              #Start the profiler
              result = StringIO.StringIO()
              profiler = cProfile.Profile()
              profiler.enable()
              yield
              #Close the profiler
              profiler.disable()
              profiler.create_stats()
              stats = pstats.Stats(profiler, stream=result)
              stats.strip_dirs().print_stats()
              debug_message = body.copy()
              debug_message['__debug__'] = result.getvalue()
              #Send the result to the exchange
              with producers[self.connection].acquire(block=True) as producer:
                  debug_queue = Queue('debug',
                                      exchange=self.exchange,
                                      routing_key='debug',
                                      durable=True,
                                      auto_declare=True)
                  producer.maybe_declare(debug_queue)
                  producer.publish(debug_message,
                                   exchange=self.exchange,
                                   declare=[self.exchange],
                                   routing_key='debug')
docs: | Rewrite/move some code?
          | EntryPointMixin requirement. Context Manager.
          | Check if debug is enabled for the message consumed.
          | If so will run cProfile for this message, and send the result
          | to the `__debug__` queue of the exchange.
  
          :param callback: the callback of the message consumed.
          :type callback: function
          :rtype: None