У меня есть код ниже, который проверяет, есть ли у меня ожидающие сообщения, записывает их все в файл и очищает список сообщений, если отправка отправляется, мне нужно изменить код так, чтобы, если список большой(более 100 MsgItems).
Я выписываю эти 100 элементов, отправляю их и удаляю из списка, если нет исключений.Если нет исключений, мы можем зацикливаться и отправлять следующие 100 сообщений.Если есть исключение (вероятная проблема с соединением), я могу пропустить и дождаться следующего вызова этого блока.
Я могу изменить if MsgItems > 0
на while
, чтобы он продолжал зацикливаться, еслиЯ не могу отправить все сообщения за один раз, но я не видел метода «написать первые 100 строк» или «очистить 100 строк» эквивалента.
Есть что-нибудь подобное или мне просто нужно сделатьfor i in range(n)
и пишите по одной строке за раз, а затем делайте то же самое с открытым, если не исключение.
if MsgItems > 0:
# get time and make unique file name
trackId = datetime.datetime.now().strftime("%y%m%d.%H%M%S")
fileName = "%s%s" % (self.__MsgFilePrefix, trackId)
try:
with self.__MsgFileLock:
self.__MsgFile.write(fileName)
trackId = self.__MsgSender.sendToMsg(fileName) #send messages to publisher
self.__logger.debug("Sent with tracking ID: %s" % trackId)
self.__MsgFile.clear() #clears message if no exception
self.__logger.debug("Msg process succeeded")
except Exception, e:
self.__logger.error("Failed to send Msg file %s"
% fileName)
self.__logger.debug(traceback.format_exc())