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

时间:2015-02-10 00:38:35

标签: python xmpp google-talk xmpppy

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(),但任何其他解决方案也是可以接受的。

1 个答案:

答案 0 :(得分:0)

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

这种方法有一些好处:

  • 允许您忽略执行时间。如果您使用time.sleep(),以防止消息消失时出现漂移(假设XMPP服务器停机一天,60秒或任何超时延迟时间超过24分钟,您的消息将开始走近你应该把你的执行时间减去你的睡眠时间。这增加了代码复杂性,这需要更多调试。
  • 让您不必担心让流程保持活跃状态​​。如果您的脚本虚假地发现网络错误并崩溃,它将在一小时后再次启动。
  • 当您希望它们运行时,使用经过时间考验和经过实战验证的机制来运行作业。

编辑:我错过了停止'退出'命令的必要性。如果使用crontab,则可以使用python-crontab自动插入/删除此作业的crontab条目。