Почему дельта-время цикла python увеличивается, когда соединение веб-сокета активно? - PullRequest
0 голосов
/ 20 января 2019

У меня есть приложение на Python, которое должно поддерживать соединение с клиентом, но также должно запускать цикл. Я делаю это с помощью asyncio и фреймворка под названием quart. Но когда я подключаюсь к приложению, время дельта цикла постоянно увеличивается. Я не знаю, что вызывает это.

Это происходит только в том случае, если в данный момент подключен клиент, иначе дельта стабильна.

@app.websocket('/ws')
async def handle():
    global running

    while True:

        if(running == 0):

            asyncio.ensure_future(mainloop())


        rData = json.loads(await websocket.receive())


before = int(time.time() * 1000)
async def mainloop():


    running = 1 

    while True:

        start = time.time()

        now = int(time.time() * 1000)
        delta = now - before
        delta = delta * 0.001
        before = now

        await asyncio.sleep(max(1./20 - (time.time() - start), 0))

        for IDs in clientIds:
            PlayerJsonData = json.dumps(IDs.data) 
            if(IDs.ws in connected):
                await IDs.ws.send(PlayerJsonData)
            else:
                clientIds.remove(IDs)  


app.run(host='localhost', port=os.environ.get('PORT', '80'))

Как сделать так, чтобы дельта была постоянной, даже если клиент в данный момент подключен?

...