我正在使用discord.py库并正在开发一个discord机器人。
基本上,我需要我的机器人每小时去一个网站,并获取有关硒的一些信息。 我想在一个线程中执行此操作,以避免在信息收集过程中阻塞机器人。
@tasks.loop(hours=1)
async def getwebsiteinfo(self):
thr = threading.Thread(target=self.getwebsiteinfofunc)
thr.start()
getwebsiteinfofunc:
def getwebsiteinfofunc(self):
...
channel.send(f"```sometext```")
..
这是问题所在:channel.send需要用await来调用,但是我不能用await来调用,因为它不在异步函数中。
但是我不能将getwebsiteinfofunc定义为异步,因为我不能将异步函数与线程一起使用。
我尝试了asyncio,但我从未使用过,但失败了。
有什么想法吗?
答案 0 :(得分:0)
如果您以异步方式编写整个任务,则不会阻塞其余的漫游器,而asyncio本身允许您编写并发任务而无需线程。
许多同步库都有aio替代方法,例如,使用aiohttp Client代替requests
库。