2015-02-10 79 views
0
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()如何使用python-xmpp(和gtalk)每隔x分钟向收件人发送一条消息?

我在哪里插入消息?我想使用time.sleep(),但任何其他解决方案也是可以接受的。

+0

我有现在使用的日期时间模块,并在最后的while循环中使用。它工作正常。 – aste123 2015-02-10 01:45:04

回答

0

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

这种方法有一定的好处:

  • 让您忽略的执行时间。如果您使用time.sleep(),为了防止消息传出时发生漂移(例如XMPP服务器关闭一天,并且60秒或任何超时会增加24分钟,则您的消息将开始向外靠近到最后一小时的底部),你真的应该计算你的执行时间,然后从你的睡眠时间中减去它。这增加了代码的复杂性,这需要更多的调试。
  • 允许您不必担心使进程保持活动状态。如果您的脚本虚假地出现网络错误并崩溃,它会在一小时内自动启动。
  • 当您希望运行作业时,使用久经考验并经过战斗验证的机制来运行作业。

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

相关问题