У меня были некоторые проблемы с тайм-аутами при отправке сообщений в 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 (хотя я не верю, что виноваты эти конфигурации), но безуспешно, мое личное предположение состоит в том, что на моем локальном server2 есть что-то, что блокирует или мешает моему общению. Во-первых, правильно ли я меняю значение тайм-аута? я проверил исходный код класса здесь: ссылка, но, кажется, я делаю это правильно, но я действительно верю, что такое свойство подразумевает время после того, как сообщение находится в очереди на отправку, а не то, как долго мы ждем реакция события. Во-вторых, есть ли способ проверить, что проблема связана с окружением моего локального сервера server2? например, исследовать сетевой путь с помощью traceroute или копать? Система - CentOS. Может ли это быть связано с новыми обновлениями в Python SDK? я только что видел этот другой вопрос, где он показывает, что мой метод для загрузки событий было обновлено только «08.01.2020», может быть, что-то связано с такими обновлениями (сомневаюсь)?
В любом случае, любые подсказки будут очень признательны. Сейчас я буду тестировать на других серверах и проверять, смогу ли я изменить свою реализацию на более новую версию и посмотреть, решит ли это проблему.