如何处理来自异步函数python的数据

Posted

技术标签:

【中文标题】如何处理来自异步函数python的数据【英文标题】:How to handle data from async function python 【发布时间】:2022-01-21 14:08:30 【问题描述】:

我有一个异步电报机器人游戏,其中有一个小型格斗游戏。战斗应用程序实现了,战斗本身,但有一件事!

可能存在一个或两个玩家在战斗中不按攻击的情况。如何设置 1 次攻击的时间限制,以便在每次攻击后重置此限制?

我尝试通过 asyncio.sleep() 实现计时器本身,它在移动后 60 秒后返回 True。

async def counter(time):
  while time - 1 > 0:
      time -= 1
      await asyncio.sleep(1)
      continue
  return True

那么这里是如何通过 asyncio 处理这个 True 的?

【问题讨论】:

缩进是粘贴错误吗? 另外,time 永远不会更新,所以这是一个无限循环 @12944qwerty,谢谢。代码固定 【参考方案1】:

在我的玩具项目中,我在不同的进程中运行由玩家编写的机器人,每个玩家可能无法进入下一轮 - 所以从这个角度来看,我的情况与你的情况相似。也许这是您可以在项目中使用的东西。

我用过这样的东西:

            try:
                some_result = await asyncio.wait_for(fut=your_future(**kwargs), timeout=5)
            except asyncio.TimeoutError:
                logger.error("Player failed to provide output within 5 seconds")

【讨论】:

感谢分享您的想法!也许这是正确的方式

以上是关于如何处理来自异步函数python的数据的主要内容,如果未能解决你的问题,请参考以下文章

Arduino如何处理中断?

如何处理异步函数 UWP App GetFileFromPathAsync(path) 中的异常;

nodejs 异步应该如何处理

当循环中调用了异步函数时,Node.JS 将如何处理循环控制?

Pyspark:如何处理 python 用户定义函数中的空值

如何处理异步 sendMessage 调用?