Я не могу выяснить проблему и хочу получить информацию о том, является ли мой код Python неправильным, или это проблема или ограничение дизайна библиотеки Python XMPP. Кстати, я новичок в Python.
Ниже приведены фрагменты кода, о котором идет речь. То, что я хотел бы сделать, это прочитать в текстовом файле получателей чата, по одному получателю на строку, в формате 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)