gmr / rabbitpy

A pure python, thread-safe, minimalistic and pythonic RabbitMQ client library
http://rabbitpy.readthedocs.org
BSD 3-Clause "New" or "Revised" License
242 stars 58 forks source link

RecursionError when consuming from queue? #101

Closed fake-name closed 7 years ago

fake-name commented 8 years ago

I'm not sure what the issue here is (it's probably in my code), but I'm seeing rabbitpy die a lot with a recursion error:

  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/media/Storage/Scripts/ReadableWebProxy/LocalAmqpConnector/__init__.py", line 378, in _processReceiving
    for item in self.interface.get_rx():
  File "/media/Storage/Scripts/ReadableWebProxy/LocalAmqpConnector/__init__.py", line 157, in get_rx
    for item in self.in_q:
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/amqp_queue.py", line 195, in consume
    message = self.channel._consume_message()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 305, in _consume_message
    frame_value = self._wait_on_frame([spec.Basic.Deliver])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()

    [ snip a whole bunch of lines ]

  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 472, in _wait_on_frame
    self._on_interrupt_set()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 351, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 226, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 448, in _wait_on_frame
    value = self._read_from_queue()
  File "/usr/local/lib/python3.5/dist-packages/rabbitpy/base.py", line 384, in _read_from_queue
    value = self._read_queue.get()
  File "/usr/lib/python3.5/queue.py", line 158, in get
    with self.not_empty:
RecursionError: maximum recursion depth exceeded

where


        uri = '{scheme}://{username}:{password}@{host}:{port}/{virtual_host}?{query_str}'.format(
            scheme       = 'amqps',
            username     = self.config['userid'],
            password     = self.config['password'],
            host         = self.config['host'].split(":")[0],
            port         = self.config['host'].split(":")[1],
            virtual_host = self.config['virtual_host'],
            query_str    = qs,
            )

        self.connection = rabbitpy.Connection(uri)

        self.bare_channel = self.connection.channel(blocking_read = True)

        resp_exchange = rabbitpy.Exchange(
                    self.bare_channel,
                    name=config['response_exchange'],
                    exchange_type=config['response_exchange_type'],
                    durable=config['durable']
                )
        resp_exchange.declare()

        self.in_q  = rabbitpy.Queue(self.bare_channel, name=config['response_queue_name'], durable=config['durable'],  auto_delete=False)
        self.in_q.bind(resp_exchange, routing_key=config['response_queue_name'].split(".")[0])

        self.in_q.declare()

I have heartbeats on, and am working in a heavily multi-threaded context (one thread works as the consumer, one places items into an outgoing channel, and I have a third thread that just cycles keepalive packets through a separate queue/exchange.

I'm working across a rather unreliable link (non-zero packet loss, long latencies), so if there is something that can happen to the underlying socket that breaks it, it probably will. In this case, after the above error occurs, I have retry logic that closes the connection, and then tries to reopen it, and I have had it then loop infinitely where it encounters the above recursion error every time it tries to reconnect and then consume messages.

I assume I'm probably doing something wrong, but I'm a bit confused about the error, as as far as I know, I haven't attached any callbacks, so I'm not sure how they could be recursing at all.

fake-name commented 8 years ago

Ok, the issue appears to be occurring when I cancel a active consumer from another thread.

fake-name commented 8 years ago

Ok, I've managed to put together a minimal example:


import urllib.parse
import logging
import threading
import time
import json

import rabbitpy

DIE = False

class AmqpContainer(object):
    def __init__(self):

        self.log = logging.getLogger("Main.Connector")

        self.log.info("Initializing AMQP connection.")

        self.config = json.load(open("test_conf.json"))

        qs = urllib.parse.urlencode({
            'cacertfile'           : self.config['sslopts']['ca_certs'],
            'certfile'             : self.config['sslopts']['certfile'],
            'keyfile'              : self.config['sslopts']['keyfile'],

            'verify'               : 'ignore',
            'heartbeat'            : 15,

            'connection_timeout'   : 60,

            })

        uri = '{scheme}://{username}:{password}@{host}:{port}/{virtual_host}?{query_str}'.format(
            scheme       = 'amqps',
            username     = self.config['userid'],
            password     = self.config['password'],
            host         = self.config['host'].split(":")[0],
            port         = self.config['host'].split(":")[1],
            virtual_host = self.config['vhost'],
            query_str    = qs,
            )

        self.connection = rabbitpy.Connection(uri)

        self.channel = self.connection.channel()
        self.log.info("Connection established. Setting up consumer.")

        self.log.info("Configuring queues.")

        resp_exchange = rabbitpy.Exchange(
                    self.channel,
                    name="test_resp_enchange.e",
                    exchange_type="direct",
                    durable=False
                )
        resp_exchange.declare()

        self.in_q  = rabbitpy.Queue(self.channel, name="test_resp_queue.q", durable=False,  auto_delete=False)
        self.in_q.declare()
        self.in_q.bind(resp_exchange, routing_key="test_resp_queue")

        print("Starting thread")
        self.rx_thread = threading.Thread(target=self.get_rx)
        self.tx_thread = threading.Thread(target=self.fill_queue)

        self.rx_thread.start()
        self.tx_thread.start()

    def get_rx(self):
        print("Get_rx call()")
        for item in self.in_q:
            print("Item: ", item.body)
            item.ack()

        print("Consumer exited!")

    def fill_queue(self):
        while not DIE:
            print("Putting message")
            rabbitpy.Message(self.channel, body_value="test?").publish(exchange="test_resp_enchange.e", routing_key="test_resp_queue")
            # self.channel.basic_publish(exchange="test_resp_enchange.e", body='test?', routing_key="test_resp_queue")
            time.sleep(0.1)

    def interrupt(self):
        self.in_q.stop_consuming()

    def close(self):
        print("Joining")
        self.rx_thread.join(0)
        print("Closing connection")
        global DIE
        DIE = True
        self.tx_thread.join()
        self.connection.close()
        print("Closed")

def test():
    import sys
    import os.path
    logging.basicConfig(level=logging.INFO)

    tester = AmqpContainer()
    time.sleep(10)
    tester.interrupt()
    time.sleep(10)
    tester.close()

if __name__ == "__main__":
    test()

The above produces the following output when executed:

INFO:Main.Connector:Initializing AMQP connection.
INFO:Main.Connector:Connection established. Setting up consumer.
INFO:Main.Connector:Configuring queues.
Starting thread
Get_rx call()
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Putting message
Item:  b'test?'
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Putting message
Item:  b'test?'
Item:  b'test?'
Putting message
Setting interrupt!
Callback:
<bound method Channel._on_ready_to_cancel of <rabbitpy.channel.Channel object at 0x7f415427f5f8>>

  File "amqp_test.py", line 115, in <module>
    test()

  File "amqp_test.py", line 109, in test
    tester.interrupt()

  File "amqp_test.py", line 90, in interrupt
    self.in_q.stop_consuming()

  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/amqp_queue.py", line 325, in stop_consuming
    self.channel._cancel_consumer(self)  # pylint: disable=protected-access

  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 241, in _cancel_consumer
    consumer_tag, nowait)

  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 341, in _interrupt_wait_on_frame
    for entry in traceback.format_stack():

Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "amqp_test.py", line 76, in get_rx
    for item in self.in_q:
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/amqp_queue.py", line 195, in consume
    message = self.channel._consume_message()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 308, in _consume_message
    return self._wait_for_content_frames(frame_value)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 465, in _wait_for_content_frames
    return self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 251, in _on_ready_to_cancel
    self.rpc(spec.Basic.Cancel(consumer_tag=consumer_tag))
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 227, in rpc
    return self._wait_on_frame(frame_value.valid_responses)
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 480, in _wait_on_frame
    self._on_interrupt_set()
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/base.py", line 359, in _on_interrupt_set
    self._interrupt['callback'](*self._interrupt['args'])
  File "/media/Storage/Scripts/ReadableWebProxy/rabbitpy/channel.py", line 244, in _on_ready_to_cancel
    LOGGER.debug('Cancelling consumer')
  File "/usr/lib/python3.5/logging/__init__.py", line 1266, in debug
    if self.isEnabledFor(DEBUG):
  File "/usr/lib/python3.5/logging/__init__.py", line 1519, in isEnabledFor
    if self.manager.disable >= level:
RecursionError: maximum recursion depth exceeded in comparison

Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Putting message
Joining
Closing connection
Closed

Note that in the above, I've instrumented the rabbutpy/base.py file with a debug statement in the _interrupt_wait_on_frame(self, callback, *args) call, so that's where the <bound method Channel._on_ready_to_cancel of <rabbitpy.channel.Channel object at 0x7f415427f5f8>> output is coming from.

fake-name commented 8 years ago

Note that I'm running the latest rabbitpy (cloned via git). RabbitMQ server is RabbitMQ 3.6.2, Erlang 19.0. Platform is python 3.5.1 x64 on Ubuntu 16.04 LTS.

fake-name commented 8 years ago

Further note: If I don't stuff the queue with packets, this error doesn't occur.

fake-name commented 8 years ago

Ok, the issue is pretty straightforward, now that I've been following the internal logic a bit.

Basically, the interrupt cancel procedure sets a flag, which causes the _on_interrupt_set() call to be called. This issues a Basic.Cancel() through the channel. However, it uses the normal channel rpc() interface, which then checks if it should be cancelled again, and then recurses.

I'm not sure what the proper solution is here. Basically, even after the interrupt request is set, you still have to be able to consume some messages (the Cancel response).

Possibly, the interrupt request shouldn't be able to cancel any _wait_on_frame() calls that are waiting on Basic.Cancel messages?

fake-name commented 8 years ago

Ok, I modified _wait_on_frame() so the call is:


        # Clear here to ensure out of processing loop before proceeding
        if self._interrupt_is_set and frame_type != "Basic.CancelOk":
            self._on_interrupt_set()

Instead of


        # Clear here to ensure out of processing loop before proceeding
        if self._interrupt_is_set:
            self._on_interrupt_set()

And it doesn't throw an exception on consumption halt anymore. On the other hand, looking at _validate_frame_type(), it looks like frame_type can be a variety of types, and I'm not checking for all the possible ways CancelOk could be represented.

Really, I'm not sure if this is even the correct way to handle this issue. Is this the correct approach?

gmr commented 7 years ago

Thanks for the example, I'm trying to reproduce against the 1.0 release candidate and am not seeing this issue.

gmr commented 7 years ago

I'm going to release 1.0 shortly -- given the age of the ticket, I don't expect you to test this right away. Do you want to test this before I close the ticket?

fake-name commented 7 years ago

If you're satisfied it's fixed, go ahead and close. I'll just comment and ask to reopen if I see something act up.

FWIW, I've been shoving ~60 messages/second through a intercontinental pipe via this library for the last few months, and aside from a few growing pains and issues at adoption, I haven't really had to look at any of the communications components of my project for the last month or more!

Mind you, things crash a lot more then that, but at least the RabbitMQ bit seems to not be causing issues, which just leaves my own disaster project.

gmr commented 7 years ago

Very cool, thanks for the feedback and issues to fix!