-1

使用 aiohttp 创建的 SocketIO 服务器在从其 socketio 客户端zoo接收消息时将一个新字符串附加到全局字典。addAnimal

是否也可以zoo每 5 秒打印一次字典?我下面的当前代码似乎不是zoo每 5 秒打印一次。

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)
4

1 回答 1

1

试试这个。

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)
于 2018-06-22T10:38:12.187 回答