Django Web サイトから jabber メッセージを送信するために xmpppy を使用しようとしています。これは完全に正常に機能します。
ただし、メッセージはリスト内の最初の受信者にのみ送信されます。これは、django から次の関数を実行した場合と、対話型の python-shell から実行した場合に発生します。ただし、奇妙な点は、関数の本体を抽出して対話的に実行すると、すべての受信者 (現時点では 2 人だけ) がメッセージを受け取ることです。
また、print-statement が 2 回実行され、2 つの異なるメッセージ ID が返されるため、内側の for ループが正しい count 回 (2) 実行されることもわかっています。
関数は次のようになります。
def hello_jabber(request, text):
jid=xmpp.protocol.JID(settings.JABBER_ID)
cl=xmpp.Client(jid.getDomain(),debug=[])
con=cl.connect()
auth=cl.auth(jid.getNode(),settings.JABBER_PW,resource=jid.getResource())
for friend in settings.JABBER_FRIENDS:
id=cl.send(xmpp.protocol.Message(friend,friend + ' is awesome:' + text))
print 'sent message with id ' + str(id)
cl.disconnect()
return render_to_response('jabber/sent.htm', locals())