如何使用 python-xmpp(和 gtalk)每 x 分钟向收件人发送一条消息?
Posted
技术标签:
【中文标题】如何使用 python-xmpp(和 gtalk)每 x 分钟向收件人发送一条消息?【英文标题】:How to send a message to a recipient every x minutes by using python-xmpp (and gtalk)? 【发布时间】:2015-02-10 00:38:35 【问题描述】: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
不管上面的代码做什么,我都想每隔一小时向收件人发送一次消息,作为对某事的提醒。即使收到消息并且控制转到message_received
函数,每小时发送的消息也应该继续,除非遇到exit()
。
我在哪里插入消息?我想使用time.sleep()
,但也可以使用任何其他解决方案。
【问题讨论】:
我现在使用了 datetime 模块,并在最后的 while 循环中使用了它。它工作正常。 【参考方案1】:如果您可以使用其他实用程序来执行此操作,我更愿意使用其他工具(例如,*nixes 的 cron/anacron)来运行快速退出并发送消息的简短脚本。
这种方法有一些好处:
允许您忽略执行时间。如果你使用 time.sleep(),为了防止你的消息发出时漂移(比如 XMPP 服务器关闭了一天,而 60 秒或任何超时加起来为 24 分钟,你的消息将开始更接近到小时的底部而不是顶部),你真的应该为你的执行计时,然后从你的睡眠时间中减去它。这增加了代码的复杂性,需要更多的调试。 让您不必担心保持进程处于活动状态。如果您的脚本虚假地遇到网络错误并崩溃,它会在一小时后自动重新启动。 使用经过时间考验和久经考验的机制来运行您希望运行的作业。编辑:我错过了停止“退出”命令的需要。如果您使用 crontab,您可以使用 python-crontab 自动插入/删除该作业的 crontab 条目。
【讨论】:
以上是关于如何使用 python-xmpp(和 gtalk)每 x 分钟向收件人发送一条消息?的主要内容,如果未能解决你的问题,请参考以下文章