如何每隔X秒将SocketIO / aiohttp打印到屏幕上

时间:2018-06-20 15:09:25

标签: python python-3.x socket.io aiohttp python-socketio

使用aiohttp创建的SocketIO服务器在收到来自其socketio客户端的zoo消息时,会将新字符串附加到全局字典addAnimal上。

是否还可以每5秒打印一次字典zoo?我下面的当前代码似乎并没有每5秒打印一次zoo

import time
from aiohttp import web
import socketio

zoo = []

sio = socketio.AsyncServer()
app = web.Application()
sio.attach(app)

@sio.on('addAnimal')
async def onAddAnimal(sid, animal):
    zoo.append(animal)
    print('Zoo: ', zoo)

if __name__ == '__main__':
    web.run_app(app)

    while True:
        print('Zoo:', zoo)
        time.delay(5)

1 个答案:

答案 0 :(得分:0)

尝试一下。

from aiohttp import web
import socketio

zoo = []

sio = socketio.AsyncServer()
app = web.Application()
sio.attach(app)


async def print_zoo(interval: int):
    while True:
        print(zoo)
        await asyncio.sleep(interval)


@sio.on('addAnimal')
async def onAddAnimal(sid, animal):
    zoo.append(animal)
    print('Zoo: ', zoo)

if __name__ == '__main__':
    asyncio.ensure_future(print_zoo(5))
    web.run_app(app)