Welcome to aio-pika’s documentation!

Coveralls Travis CI Latest Version https://img.shields.io/pypi/wheel/aio-pika.svg https://img.shields.io/pypi/pyversions/aio-pika.svg https://img.shields.io/pypi/l/aio-pika.svg

aio_pika it’s a wrapper for the PIKA for asyncio and humans.


  • Completely asynchronous API.
  • Object oriented API.
  • Auto-reconnects with complete state recovery with connect_robust (e.g. declared queues or exchanges, consuming state and bindings).
  • Python 3.4+ compatible (include 3.6).


Installation with pip:

pip install aio-pika

Installation from git:

# via pip
pip install https://github.com/mosquito/aio-pika/archive/master.zip

# manually
git clone https://github.com/mosquito/aio-pika.git
cd aio-pika
python setup.py install

Usage example

import asyncio
from aio_pika import connect_robust, Message

async def main(loop):
    connection = await connect_robust("amqp://guest:guest@", loop=loop)

    queue_name = "test_queue"
    routing_key = "test_queue"

    # Creating channel
    channel = await connection.channel()

    # Declaring exchange
    exchange = await channel.declare_exchange('direct', auto_delete=True)

    # Declaring queue
    queue = await channel.declare_queue(queue_name, auto_delete=True)

    # Binding queue
    await queue.bind(exchange, routing_key)

    await exchange.publish(
            bytes('Hello', 'utf-8'),
            headers={'foo': 'bar'}

    # Receiving message
    incoming_message = await queue.get(timeout=5)

    # Confirm message

    await queue.unbind(exchange, routing_key)
    await queue.delete()
    await connection.close()

if __name__ == "__main__":
    loop = asyncio.get_event_loop()


Clone the project:

git clone https://github.com/mosquito/aio-pika.git
cd aio-pika

Create a new virtualenv for aio_pika:

virtualenv -p python3.5 env

Install all requirements for aio_pika:

env/bin/pip install -e '.[develop]'

Thanks for contributing