Polyconseil / aioamqp

AMQP implementation using asyncio
Other
280 stars 88 forks source link

Publishing to a non-existing exchange does not raise errors #221

Open greatvovan opened 3 years ago

greatvovan commented 3 years ago

When publishing to a non-existing exchange the module does not raise any exceptions, but any subsequent operation on the channel will raise exceptions.

This code completes without problems, but will throw if uncommented:

import asyncio
import aioamqp

async def main():
    tr, pr = await aioamqp.from_url('amqp://log:pass@host')
    chan = await pr.channel()
    await chan.publish(b'ABC', 'no-such-exchange', '')
    # await chan.publish(b'ABC', 'no-such-exchange', '')
    # await chan.close()
    tr.close()
    await asyncio.sleep(1.0)

asyncio.run(main())

Expected: an exception is raised at the moment of problem operation.

aioamqp==0.14.0 Python 3.8.0

dzen commented 3 years ago

Hi @greatvovan

it's because of AMQP design : the publish does not raises any error, but any operations fails thereafter

https://stackoverflow.com/questions/56550352/python-pika-publishing-to-non-existing-exchange-does-not-raise-exception