你好,我正在尝试使用异步来获取输入,如果给定,则继续,如果未给定,则取消任务并使用默认输入。
state = 'routine'
async def start():
while True:
state = input('Enter state')
print(state)
async def main():
task = asyncio.Task(start())
await asyncio.sleep(5)
task.cancel()
print(state)
with suppress(asyncio.CancelledError):
await task 这是一个无限循环,给用户5秒的时间来提供输入,如果用户没有提供任何输入,则使用默认的输入(状态)。
发布于 2019-08-19 17:08:12
input是一个阻塞函数,因此不能从协程调用它。提示您的start协程没有正确编写,那就是它没有await任何东西。请看一下input和其他异步等效项的aioconsole。
此外,使用asyncio.create_task (或Python3.7之前的loop.create_task )创建任务,而不是直接调用Task构造函数。
https://stackoverflow.com/questions/57547250
复制相似问题