代码之家  ›  专栏  ›  技术社区  ›  bux

有aiozmq流的简单酒吧/酒吧

  •  0
  • bux  · 技术社区  · 7 年前

    酒吧

    # coding: utf-8
    import asyncio
    import time
    
    import aiozmq
    import zmq
    
    
    async def do():
        stream = await aiozmq.stream.create_zmq_stream(
            zmq_type=zmq.PUB,
            bind='tcp://127.0.0.1:5556',
        )
        while True:
            await asyncio.sleep(1)
            msg = [str(time.time()).encode()]
            print('write ', msg)
            stream.write(msg)
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(do())
    

    # coding: utf-8
    import asyncio
    
    import aiozmq
    import zmq
    
    
    async def do():
        stream = await aiozmq.stream.create_zmq_stream(
            zmq_type=zmq.SUB,
            connect='tcp://127.0.0.1:5556',
        )
        while True:
            print('wait ...')
            msg = await stream.read()
            print('received ', msg)
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(do())
    

    执行pub.py时:

    python pub.py      
    write  [b'1534927086.914483']
    write  [b'1534927087.9154818']
    write  [b'1534927088.9164672']
    

    python sub.py
    wait ...
    

    我错过了什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   bux    7 年前

    只是错过了传输订阅线路 sub.py . 有一个工作sub.py:

    # coding: utf-8
    import asyncio
    
    import aiozmq
    import zmq
    
    
    async def do():
        stream = await aiozmq.stream.create_zmq_stream(
            zmq_type=zmq.SUB,
            connect='tcp://127.0.0.1:5556',
        )
        stream.transport.subscribe(b'')
    
        while True:
            print('wait ...')
            msg = await stream.read()
            print('received ', msg)
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(do())
    

    生产:

    python sub.py 
    wait ...
    received  [b'1534927504.0462704']
    wait ...
    received  [b'1534927505.0478334']