| 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

def debug(self, body, message):#pylint:disable=arguments-differ,unused-argument
        """
        | 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
        """
        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')