Asyncio.sleep() 似乎永远睡着了

时间:2021-02-04 15:15:21

标签: python task python-asyncio

我需要编写将对象添加到数组并在 x 秒后删除它的函数。我使用 asyncio.sleep 延迟。代码如下:

import asyncio


class Stranger: 
    def __init__(self, address):
        self.address = address 


class Fortress:  
    def __init__(self, time_: int, attempts: int):
        self.time = time_ 
        self.attempts = attempts 
        self.strangers_list: list = []

    async def _handle_task(self, stranger):  
        self.strangers_list.append(stranger)
        index = len(self.strangers_list) - 1
        await asyncio.sleep(self.time)
        print('Woke up')
        self.strangers_list.pop(index)

    async def _create_handle_task(self, stranger): 
        task = asyncio.create_task(self._handle_task(stranger))
        print('Ran _handle_task')

    def handle(self, stranger): 
        asyncio.run(self._create_handle_task(stranger))


async def main(tim):
    await asyncio.sleep(tim)


if __name__ == "__main__":
    f = Fortress(2, 4)
    s = Stranger('Foo street, 32')
    f.handle(s)
    asyncio.run(main(3))

理论上,输出可能是:

Ran _handle_task
Woke up

但它只是Ran _handle_task 干扰程序从睡眠中醒来是什么问题?

0 个答案:

没有答案