每周执行Python Asyncio调度任务

问题描述 投票:0回答:1

我正在用Python写一个discord机器人,它已经具有两个异步覆盖的方法on_ready和on_message以某种方式对消息做出反应。

现在我想添加一个函数,该函数应该每周调用一次。我尝试使用asyncio.sleep()进行操作,但我不想在该特定时间启动漫游器,然后休眠604.800 sec(以秒为单位的1周)以每周重复一次该功能。

这是我到目前为止所得到的:

class MyClient(discord.Client):

    async def on_ready(self):
        #some initial stuff
        self.loop.create_task(self.routine())

    async def on_message(self, message):
        #reply to chat messages
        await message.channel.send("Reply")

    async def routine(self):
        while True:
            print("I'm on that routine boi")
            await asyncio.sleep(3)

目前为止,我可以不协调地使用漫游器,每3秒获取一次输出。但我更希望schedule module中的内容使用[]

scheduler.every().sunday.at("8:55").do(self.routine())

是否有机会与asyncio结合使用来做类似的事情?

我正在用Python写一个discord机器人,该机器人已经具有两个异步覆盖的方法on_ready和on_message以某种方式对消息做出反应。现在我想添加一个函数,该函数应该...

python discord python-asyncio schedule
1个回答
0
投票

事件循环提供了计划在将来某个时候调用回调函数的机制,如here in Python docs所示>>

class MyClient(discord.Client):

    async def on_ready(self):
        #some initial stuff
        self.loop.create_task(self.routine())

    async def on_message(self, message):
        #reply to chat messages
        await message.channel.send("Reply")

    async def routine(self):
        while True:
            print("I'm on that routine boi")
            loop.call_later(delay, callback, *args, context=None)¶
            # await asyncio.sleep(3)
            delay += delay + 604800 
© www.soinside.com 2019 - 2024. All rights reserved.