Asyncio,asyncio.sleep(5) 在 5 秒后发送每个变量,而不是一个接一个地发送

Asyncio, asyncio.sleep(5) sends every variable after 5 sec and not one after the other

asyncio.sleep()函数有没有解决办法。我将多个命令作为“命令”发送到函数“async def send”,它应该一个接一个地发送。它只发送一个,5 秒后发送其余的。

编辑:

async def send(self, command, count):

         for x in range(count):
            await self.ws.send(command)
            lb1.insert(END, command)
            await asyncio.sleep(5)

这是我传递值的函数:

def sending():
        command = entry.get("1.0", 'end-1c')
        p = command.split('@')
        count = 0
        for x in p:
            print(f'Sent -> {x}')
            asyncio.ensure_future(echo.send(x, count))
            count+=1

btn2.config(command=sending)

我期待: 例如:4 个输入命令,第一个被发送,延迟开始 5 秒,第二个应该被发送 -> 延迟 5 秒 -> ...

最终编辑:

async def send(self, command):

    p = command.split('@')

    for x in p:
        await self.ws.send(x)
        lb1.insert(END, x)
        await asyncio.sleep(5)

现在可以了:)我发现了我的错误

def sending():
    command = entry.get("1.0", 'end-1c')
    print(f'Sent -> {command}')
    asyncio.ensure_future(echo.send(command))

您是否打算:

async def send(self, command, count):
    for i in range(count):
        await self.ws.send(command)
        lb1.insert(END, command)
        await asyncio.sleep(5)

但是,使用 insert 让我觉得这是一个 tkinter 应用程序。如果那是正确的,那么这是错误的方法。在此函数 returns 并返回主循环之前,不会更新任何内容。您主要需要改用 tk.after