2010-04-14 7 views
0

J'essaie d'utiliser xmpppy pour envoyer des messages jabber à partir d'un site Web django. Cela fonctionne entièrement bien. Toutefois, le message est uniquement envoyé au premier des destinataires de la liste. Cela arrive quand j'exécute la fonction suivante à partir de django, et aussi si je la lance depuis un shell python interactif. La partie étrange, cependant, est que si j'extrais le «corps» de la fonction et que je l'exécute de manière interactive, alors tous les destinataires (il n'y en a que 2 en ce moment) reçoivent le message.django + xmppy: envoyer un message à deux destinataires

En outre, je sais que la boucle for interne exécute les temps de comptage corrects (2), car l'instruction print s'exécute deux fois et renvoie deux identifiants de message différents.

La fonction ressemble à ceci:

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()) 

Répondre

0

Activez les options de débogage dans xmpppy pour voir ce que fait le client XMPP.

+0

J'ai essayé cela maintenant. Cela n'a pas semblé faire beaucoup, bien qu'il ait généré une erreur, mais l'erreur semble être liée à ps2 étant indéfini/fermé dans django. (Il va de soi, je suppose que stderr sur unix et que debug-info va là) Voici la sortie pertinente: DEBUG: socket envoyé DEBUG: socket envoyé DEBUG: erreur de socket Erreur de socket lors de la réception data AttributeError: l'objet 'module' n'a pas d'attribut 'ps2' – Agrajag

+0

Plus de recherche montre que si je cours le même code à partir de python (sans django), comme prévu les plaintes à propos de ps2 disparaissent, MAIS je reçois toujours l'erreur "Socket while réception de données "" client: arrêt Déconnexion détectée ". Donc, django est innocent :-) Encore un mystère pourquoi l'exécution de ce code comme une -fonction- bombes, mais en cours d'exécution dans l'interpréteur python ne le fait pas, cependant. – Agrajag

Questions connexes