python - 事件中心发送失败 MessageSendResult.Timeout Python
问题描述
在向 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 中有一些东西阻塞或干扰了我的通信。首先,我是否正确更改了超时值?我在这里检查了类的源代码:link 但似乎我做得对,但我实际上相信这样的属性意味着消息在队列中发送后的时间,而不是我们等待事件响应的时间。其次,有没有一种方法可以验证问题取决于我的本地服务器 2 的环境?例如像使用traceroute探索网络路径,还是挖掘?该系统是一个CentOS。会不会与 Python SDK 的新升级有关?我刚刚看到另一个问题,它表明我上传事件的方法已经升级,只是“01/08/2020”可能与此类升级有关(我对此表示怀疑)?
无论如何,任何线索将不胜感激。现在我将在其他服务器上进行测试并检查我是否可以设法将我的实现更改为较新的版本,看看是否能解决问题。
解决方案
这听起来像一个网络问题。尝试在 server2 上的端口 9354 上 ping 命名空间的 TCP 端点。如果防火墙阻止到端点的出站连接,那么您需要修复它或尝试启用可以通过 443 的 websocket。
推荐阅读
- javascript - 推文对象数组的 ShellSort
- c# - 在 UWP 中使用 data.sqlclient 的 SQL Server 请求出错
- rust - 如何将值推送到 Vec 并同时将其附加到 String?
- angular - 文件名...不同于已包含的文件名...仅在大小写中
- ios - 笔尖中的颜色资产以编程方式覆盖设置颜色
- android - 当且仅当按钮的活动来自另一个活动时,我如何才能使按钮不可见?
- json - 添加“debugLocale”时如何通过write-manifest.json的JSON验证?
- python - 是否可以在 tkinter 画布中填充弧形/椭圆形的外部?
- xcode - 在 git pull 命令后,React 本机应用程序停止工作
- javascript - WebAPI 5.2.7 使用基类中的 JSON.Net 从角度日期错误地反序列化