我有一个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'))
我如何才能做到,即使当前连接了客户端,增量也保持不变?