2010-05-12 64 views
0

我找不出这个问题,并希望得到一些关于我的Python代码是否不正确的输入,或者这是Python XMPP的问题还是设计限制图书馆。顺便说一句,我是Python的新手。python-xmpp并通过收件人列表循环以接收和IM消息

下面是代码片段在下面的问题。我想要做的是在IM收件人的文本文件中读取,每行一个收件人,采用XMPP/Jabber ID格式。这被读入一个Python列表变量。

然后,我实例化一个XMPP客户端会话并遍历收件人列表,并向每个收件人发送消息。然后休息一段时间并重复测试。这用于负载测试收件人的IM客户端以及IM服务器。有代码交替处理从命令行输入而不是从文件中只输入一个收件人的情况。

最终发生的事情是,Python在列表中迭代/循环,但只有列表中的最后一个收件人接收到消息。切换收件人的顺序以验证。看起来像Python XMPP库没有正确发送它,或者我错过了库调用的一个步骤,因为运行时的调试打印语句表明循环正常工作。


recipient = "" 
delay = 60 
useFile = False 
recList = [] 
... 
elif (sys.argv[i] == '-t'): 
    recipient = sys.argv[i+1] 
    useFile = False 
elif (sys.argv[i] == '-tf'): 
    fil = open(sys.argv[i+1], 'r') 
    recList = fil.readlines() 
    fil.close() 
    useFile = True 
... 
# disable debug msgs 
cnx = xmpp.Client(svr,debug=[]) 
cnx.connect(server=(svr,5223)) 
cnx.auth(user,pwd,'imbot') 
cnx.sendInitPresence() 

while (True): 
    if useFile: 
    for listUser in recList: 
     cnx.send(xmpp.Message(listUser,msg+str(msgCounter))) 
     print "sending to "+listUser+" msg = "+msg+str(msgCounter) 
    else: 
    cnx.send(xmpp.Message(recipient,msg+str(msgCounter))) 
    msgCounter += 1 
    time.sleep(delay) 

回答

2

没关系,发现问题了。一个人不得不在线的末尾换行符,以获得file.readlines()返回的列表中的元素,所以我必须在发送时使用.rstrip('\ n')去除它。 out消息。