简单的持续运行的Python XMPP客户端
我正在使用python-xmpp来发送jabber消息。一切都很顺利,但每次我想发送消息(每15分钟一次)时,都需要重新连接到jabber服务器。在这段时间里,发送消息的客户端是离线状态,无法接收消息。
所以我想写一个非常简单的xmpp客户端,让它一直在线,这样就可以随时发送(和接收)消息。
我尝试的一个简单方法(但没有成功):
import time
import xmpp
class Jabber(object):
def __init__(self):
server = 'example.com'
username = 'bot'
passwd = 'password'
self.client = xmpp.Client(server)
self.client.connect(server=(server, 5222))
self.client.auth(username, passwd, 'bot')
self.client.sendInitPresence()
self.sleep()
def sleep(self):
self.awake = False
delay = 1
while not self.awake:
time.sleep(delay)
def wake(self):
self.awake = True
def auth(self, jid):
self.client.getRoster().Authorize(jid)
self.sleep()
def send(self, jid, msg):
message = xmpp.Message(jid, msg)
message.setAttr('type', 'chat')
self.client.send(message)
self.sleep()
if __name__ == '__main__':
j = Jabber()
time.sleep(3)
j.wake()
j.send('receiver@example.org', 'hello world')
time.sleep(30)
这里的问题似乎是我无法让它“醒过来”。我猜可能需要一些并发处理。这样说对吗?如果是的话,我该怎么做呢?
补充:在研究了所有关于并发的选项后,我决定使用twisted和wokkel。如果可以的话,我真想删掉这篇帖子。