http://habrahabr.ru/post/218423/
  	Наверное, все уже слышали о чудесной библиотеке 
asyncio?
Если нет, то коротко: эта либа стала стандартом на асинхронное сетевое программирование на Python. 
tornado и 
twisted или научатся с ней работать или постепенно уйдут в маргиналы.
asyncio прекрасна, но это просто библиотека для работы с 
TCP, 
UDP, 
UNIX сокетами, 
PIPES и асинхронным запуском 
subprocess.
Чтобы всем было здорово нужны сторонние библиотеки, умеющие работать с 
asyncio. Кое-что уже есть, но мало.
Вот я с коллегами и сделал пару: одну для 
ZeroMQ и другую для 
PostgreSQLЕсли вы прочно сидите на Python 2 и не интересуетесь Python 3 — не ходите под кат во избежание глупых вопросов и прочих недоразумений.
Зачем оно мне было надо? 
Потому что мы начинаем новый проект в котором без 
ZeroMQ и 
Postgress не обойтись. Очень хочется делать на 
asyncio. Пришлось запилить недостающие кусочки.
Сразу скажу, обе либы добротные. Я 
Python Core Developer и в коде 
asyncio тоже есть немало моего труда. Думаю, я понял как хорошо писать для системы, которую сам же помогал создавать.
Плюс (почти) 100% покрытие кода обоих библиотек тестами и внятная (надеюсь) документация.
aiozmq — позволяет использовать 
ZeroMQ сокеты с 
asyncio.
Документация — 
здесь.
aiozmq работает с низкоуровневыми 
ZeroMQ сокетами и, главное, даёт из коробки механизм 
Remote Procedure Call (плюс 
PubSub и 
Notify).
Короткий пример:
    import asyncio
    import aiozmq
    import aiozmq.rpc
    class ServerHandler(aiozmq.rpc.AttrHandler):
        @aiozmq.rpc.method
        def remote_func(self, a:int, b:int) -> int:
            return a + b
    @asyncio.coroutine
    def go():
        server = yield from aiozmq.rpc.start_server(
            ServerHandler(), bind='tcp://127.0.0.1:5555')
        client = yield from aiozmq.rpc.open_client(
            connect='tcp://127.0.0.1:5555')
        ret = yield from client.rpc.remote_func(1, 2)
        assert 3 == ret
        server.close()
        client.close()
    asyncio.set_event_loop_policy(aiozmq.ZmqEventLoopPolicy())
    asyncio.get_event_loop().run_until_complete(go())
Теперь перейдем к 
aiopg
Эта либа умеет работать с 
psycopg2 в асинхронном режиме и в качестве приятного бонуса даёт 
connection pool
Документация — 
здесь.
    @asyncio.coroutine
    def test_select():
        pool = yield from aiopg.create_pool(dsn)
        with (yield from pool.cursor()) as cur:
            yield from cur.execute('SELECT 1')
            ret = yield from cur.fetchone()
            assert ret == (1,), ret
Обе библиотеки выложены на GitHub: 
aiozmq и 
aiopg
Пробуйте, если понравилось — используйте.
Найдете баги — пишите на гитхабе в 
issues, а ещё лучше сразу делайте 
pull request