如何使用PythonXMPP(和gtalk)每x分钟向收件人发送一条消息?

如何使用PythonXMPP(和gtalk)每x分钟向收件人发送一条消息?,python,xmpp,google-talk,xmpppy,Python,Xmpp,Google Talk,Xmpppy,不管上面的代码做什么,我希望每小时向收件人发送一条消息,作为对某些事情的提醒。即使收到消息并且控件转到message_received函数,每小时发送的消息也应继续,除非遇到退出 我在哪里插入信息?我想使用time.sleep,但也可以使用任何其他解决方案。如果您可以使用其他实用程序来执行此操作,我更愿意使用其他工具,例如cron/anacron for*nixes来运行快速退出并发送消息的短脚本 这种方法有一些好处: 允许您忽略执行时间。如果您使用time.sleep,为了防止消息传出时出现漂

不管上面的代码做什么,我希望每小时向收件人发送一条消息,作为对某些事情的提醒。即使收到消息并且控件转到message_received函数,每小时发送的消息也应继续,除非遇到退出


我在哪里插入信息?我想使用time.sleep,但也可以使用任何其他解决方案。

如果您可以使用其他实用程序来执行此操作,我更愿意使用其他工具,例如cron/anacron for*nixes来运行快速退出并发送消息的短脚本

这种方法有一些好处:

允许您忽略执行时间。如果您使用time.sleep,为了防止消息传出时出现漂移,例如XMPP服务器停机一天,并且60秒或任何超时加起来等于24分钟,您的消息将开始在接近一小时底部而不是顶部的时候传出,您真的应该为执行计时,然后从睡眠时间中减去它。这增加了代码的复杂性,这需要更多的调试。 允许您不必担心保持流程的活力。如果您的脚本错误地遇到网络错误并崩溃,它将在一小时内自动重新启动。 当您希望运行作业时,使用经过时间测试和战斗验证的机制来运行作业。
编辑:我错过了在“退出”命令下停止的必要性。如果使用crontab,可以使用python crontab自动插入/删除此作业的crontab项。

我现在使用了datetime模块,并在末尾的while循环中使用了它。它工作得很好。
def message_received(connect_object, message_node):
    // if x event happens:
    exit()

jid = xmpp.JID(user)
connection = xmpp.Client(jid.getDomain(), debug=[])
connection.connect(server)
result = connection.auth(jid.getNode(), password, "qwerty")

connection.RegisterHandler('message', message_received)
connection.sendInitPresence()

while connection.Process(1):
    pass