veegee / amqpy

Pure-Python 2 & 3 AMQP client library
http://amqpy.readthedocs.org/
Other
33 stars 5 forks source link

Drain Events fails #2

Closed nikhilsinha closed 9 years ago

nikhilsinha commented 9 years ago

I get the following dump after processing over 100,000 messages. In the 4 most recent crashes, it happens on message number 113,851, 209,748, 139,802, and 118,996. The last two were with the exact same data.

Traceback (most recent call last): File "./mytestcode.py", line 64, in conn.drain_events(timeout=None) File "/usr/local/lib/python3.4/site-packages/amqpy/connection.py", line 296, in drain_events method = self._wait_any(timeout) File "/usr/local/lib/python3.4/site-packages/amqpy/connection.py", line 283, in _wait_any method = self.method_reader.read_method(timeout) File "/usr/local/lib/python3.4/site-packages/amqpy/method_io.py", line 175, in read_method return self._read_method() File "/usr/local/lib/python3.4/site-packages/amqpy/concurrency.py", line 39, in wrapper retval = f(self, _args, *_kwargs) File "/usr/local/lib/python3.4/site-packages/amqpy/method_io.py", line 162, in _read_method .format('Read:', method.method_type, METHOD_NAME_MAP[method.method_type])) KeyError: method_t(class_id=10, method_id=60)

veegee commented 9 years ago

This looks like an easy one. class:10 method:60 is connection.blocked and it's not in the exceptions module. Why you're getting that method for those specific messages is interesting. I'll upload a new package in a few minutes.

Edit: didn't mean to close issue just yet.

veegee commented 9 years ago

Ok, new package version is on PyPI.

nikhilsinha commented 9 years ago

Does this mean I can use pip3 to get the latest? Or do I need to do something different?

And is this exception something that's handled internally? Or is there a problem with my code?

nikhilsinha commented 9 years ago

I upgraded via pip3, and I've made it to 300,000 messages without any trouble. Thank you!

veegee commented 9 years ago

The exception that's being raised doesn't have anything to do with your code. It's caused by an entry missing from the name lookup table in amqpy. It's nothing to worry about, it's been fixed permanently.