0

我无法找出问题所在,想了解我的 Python 代码是否不正确,或者这是否是 Python XMPP 库的问题或设计限制。顺便说一句,我是 Python 新手。

下面是有问题的代码片段。我想做的是读取 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)
4

1 回答 1

2

没关系,找到问题了。必须注意 file.readlines() 返回的列表中的元素在行尾的换行符,所以我必须在发送时用元素上的 .rstrip('\n') 将其删除出消息。

于 2010-05-12T03:22:50.187 回答