jabberメッセージを送信するためにpython-xmppを使用しています。メッセージが送信されるたびに(15分ごとに)、ジャバーサーバーに再接続する必要があり、その間に送信クライアントがオフラインでメッセージを受信できないことを除いて、すべて正常に機能します。Pythonで単純に連続して動作するXMPPクライアント
本当にシンプルで無期限に動作する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('[email protected]', 'hello world')
time.sleep(30)
ここでの問題は、私はそれを目を覚ますことができないということのようです。私の最高の推測は、私はある種の並行性が必要であるということです。それは本当ですか、もしそうなら、私はどうすればそれについて最善を尽くすでしょうか?
編集:並行性に関するすべてのオプションを調べた後、私はツイストとwokkelに行くことにしました。できれば、この投稿を削除します。 xtalk.py
それは基本的にコンソールのjabberクライアントですが、shouldn」:
同時にメッセージを送受信できるようにするには、並行性が必要です。 'multiprocessing'モジュールやそこにある多くのチュートリアルの1つを見てください。 – katrielalex