Задача: Организовать оповещение по протоколу XMPP(Jabber) о произошедшем в Django-приложении событии.
Например, о добавлении новой записи в базу данных.
Условия: Windows 2008 server, Apache 2.2, Jabber server Openfire 3.6.4
Как всегда просто используя "передовой опыт старших товарищей" задача решена не была, пришлось доставать бубен и начинать танцы. В итоге: "Ура! Зарработало!".
Решение:
1. Устанавливаем:
2. Добавляем в папку нашего приложения файл xmpp_send.py со следующим содержимым:
# -*- coding: utf-8 -*-
import xmpp,time
def Jsend(usr, msg):
jidparams={}
jidparams['jid']= 'Ник отправителя@адрес jabber сервера'
jidparams['password'] = 'пароль'
jid=xmpp.protocol.JID(jidparams['jid'])
cl=xmpp.Client(jid.getDomain(),debug=[])
con=cl.connect(('адрес jabber сервера',5222), use_srv=False)
if not con:
print 'could not connect with: ' + jid.getDomain()
sys.exit()
auth=cl.auth(jid.getNode(),jidparams['password'],resource=jid.getResource())
if not auth:
print 'could not authenticate!'
sys.exit()
id=cl.send(xmpp.protocol.Message(usr, msg))
time.sleep(1)
cl.disconnect()
3. В views.py там где мы инициируем запись в базу данных добавляем:
from django.conf import settings
from application.xmpp_send.py import Jsend
...
if settings.JABBER_SEND:
msg = u'Содержание сообщения'
send = Jsend('Ник получателя@адрес jabber сервера', msg)
...
4. В settings.py добавляем:
...
JABBER_SEND = True
...
5. Перегружаем сервер и все должно работать.
P.S. Вроде мелочь, а удобно и приятно :)
Комментарии