python - 事件中心发送失败 MessageSendResult.Timeout Python

标签 python azure networking azure-eventhub

我在向 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 中的虚拟机以及本地 server1 发送消息,但是当尝试将消息发送到本地 server2 时,我收到错误:

azure.eventhub.common.EventHubError: Send failed:  Message send failed with result: MessageSendResult.Timeout

我尝试修改send_timeout和keep_alive(尽管我不相信这个配置是罪魁祸首)但没有成功,我个人的猜测是我的本地server2中有一些东西阻止或干扰了我的通信。首先,我是否正确更改了超时值?我在这里检查了该类的源代码:link但看来我做得对,但我实际上相信这样的属性意味着消息进入队列发送后的时间,而不是我们等待事件响应的时间。其次,有没有办法可以验证问题是否依赖于我的本地 server2 的环境?例如,使用traceroute或dig探索网络路径?系统是CentOS。是否与Python SDK的新升级有关?我刚刚看到了另一个question它显示我上传事件的方法已升级,只是“01/08/2020”可能与此类升级相关(我对此表示怀疑)?

无论如何,任何线索都将不胜感激。现在我将在其他服务器上进行测试,并检查我是否可以设法将我的实现更改为较新的版本,看看是否可以解决问题。

最佳答案

这听起来像是网络问题。尝试在 server2 上的端口 9354 上 ping 命名空间的 TCP 端点。如果防火墙阻止到端点的出站连接,那么您需要修复它或尝试启用可以通过 443 的 Websocket。

关于python - 事件中心发送失败 MessageSendResult.Timeout Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59896416/

相关文章:

azure - 如何连接到 Azure 中的 AD 域 Controller ?

azure - 如何查看日志分析工作区中表的行计数?

azure - 如何使用 "contact me"发布选项在 azure 市场中发布 Web 应用程序

ios - Bonjour 适合硬件通信吗?

android - 即使在 Android M 上打开移动数据(有连接),也可以通过 WiFi(无连接)发送请求

python - 使用python在Microsoft word中添加超链接

python - 将 try except block 与 python 代码合并

Python - 有问题的 json 响应

python - 创建 Tkinter 数学测验

azure - Databricks 文件触发器 - 如何将存储防火墙列入白名单