Как заставить SocketIO/aiohttp печатать на экране каждые X секунд

Сервер SocketIO, созданный с помощью aiohttp, добавляет новую строку в глобальный запрос zoo при получении addAnimal сообщение от своих клиентов socketio.

Можно ли также распечатать 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)

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)
Другие вопросы по тегам