我正在使用aiocron
库来安排一天中某些时间的函数调用。这是我想要做的最小例子。在这个例子中,我想发送一个"早上好"每天8:00发送消息
class GoodMorningSayer:
@asyncio.coroutine
def send_message(text):
#insert fancy networking stuff here
@aiocron.crontab("0 8 * * *")
@asyncio.coroutine
def say_good_morning():
yield from self.send_message("good morning!")
# I don't have self here, so this will produce an error
不幸的是,我无法在self
方法中获取say_good_morning
,因为aiocron
显然不知道或不关心它所调用的函数是什么类。这使得aiocron相当在我的情况下没用,这是一种耻辱。有没有办法在self
调用的函数中获得aiocron
?
答案 0 :(得分:0)
我现在通过使用闭包来解决这个问题:
class GoodMorningSayer:
def __init__(self):
@aiocron.crontab("0 8 * * *")
@asyncio.coroutine
def on_morning()
yield from self.send_message("good morning!")
@asyncio.coroutine
def send_message(text):
#insert fancy networking stuff here
在实际程序中,我将其包装在一些样板文件中,最终调用self.say_good_morning以保持代码清洁