У меня были некоторые проблемы с таймаутами при отправке сообщений в EventHub.
import sys
import logging
import datetime
import time
import os
from azure.eventhub import EventHubClient, Sender, EventData
logger = logging.getLogger("azure")
ADDRESS = "xxx"
USER = "xxx"
KEY = "xxx"
ENDPOINT = "xxx"
try:
if not ADDRESS:
raise ValueError("No EventHubs URL supplied.")
# Create Event Hubs client
client = EventHubClient(ADDRESS, username=USER, password=KEY, debug=True)
sender = client.add_sender(partition="0", send_timeout=300, keep_alive=10)
client.run()
try:
start_time = time.time()
for i in range(10000):
print("Sending message: {}".format(i))
message = "Message {}".format(i)
sender.send(EventData(message))
except:
raise
finally:
end_time = time.time()
client.stop()
run_time = end_time - start_time
logger.info("Runtime: {} seconds".format(run_time))
except KeyboardInterrupt:
pass
Мой контекст следующий; Я могу без проблем отправлять сообщения с моего персонального компьютера разработки, с виртуальной машины в Azure и с локального сервера1, но при попытке отправить сообщения на локальный сервер2 я получаю сообщение об ошибке:
azure.eventhub.common.EventHubError: Send failed: Message send failed with result: MessageSendResult.Timeout
Я попытался изменить send_timeout и keep_alive (хотя я не верю, что виноваты эти конфигурации), но безуспешно, я лично предполагаю, что в моем локальном сервере 2 есть что-то, что блокирует или мешает моему общению , Во-первых, правильно ли я изменяю значение времени ожидания? я проверил исходный код класса здесь: ссылка но кажется, что я все делаю правильно, но я действительно верю, что такое свойство подразумевает время после того, как сообщение находится в очереди для отправки, а не как долго мы дождаться ответа на событие. Во-вторых, есть ли способ, которым я могу проверить, что проблема зависит от envoiroment моего локального сервера2? например, исследовать сетевой путь с помощью traceroute или копать? Система является CentOS. Может ли это быть связано с новыми обновлениями в Python SDK? я только что увидел этот другой вопрос , где он показывает, что мой метод загрузки событий был обновлен только до «01/08/2020», может быть, что-то связано с такими обновлениями (я сомневаюсь в этом)?
Во всяком случае, любые подсказки будут в значительной степени устаревшими. Сейчас я буду тестировать на других серверах и проверять, смогу ли я изменить свою реализацию на более новую версию и посмотреть, решит ли это проблему.