为什么当websocket连接处于活动状态时,python循环的增量时间会增加?

时间:2019-01-19 22:43:46

标签: python asynchronous websocket python-asyncio

我有一个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'))

我如何才能做到,即使当前连接了客户端,增量也保持不变?

0 个答案:

没有答案