Я использую 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)
Проблема здесь в том, что я не могу ее разбудить.Мое лучшее предположение, что мне нужен какой-то параллелизм.Это правда, и если да, то как мне лучше всего это сделать?
РЕДАКТИРОВАТЬ: После изучения всех вариантов, касающихся параллелизма, я решил пойти с витой и wokkel.Если бы я мог, я бы удалил этот пост.