【问题标题】:Collect Websocket streaming data in Azure Event Hub using python使用 python 在 Azure Event Hub 中收集 Websocket 流数据
【发布时间】:2021-09-30 16:39:22
【问题描述】:

我正在尝试将比特币实时流数据收集到 Azure 事件中心。 下面是我们如何在本地机器上执行的代码。

如何使用此代码在 Azure 事件中心收集流式传输。微软提供的所有示例和文档都不清楚。

import logging
import websocket, json

cc = "btcusd"
interval = '1m'
socket = f'wss://stream.binance.com:9443/ws/{cc}t@kline_{interval}'

def on_message(ws, message):
    json_message = json.loads(message)
    candle = json_message['k']
    is_candle_close = candle['x']
    close = candle['c']
    high = candle['h']
    low = candle['l']
    open = candle['o']
    quote = {
        'close': close,
        'high': high,
        'low': low,
        'open': open
    }
    print(f'{cc} {is_candle_close} {quote}')

def on_error(ws, error):
    logging.error(error)

def on_close(ws):
    logging.info("### closed ###")
    
logging.info("Start")
logging.info("Connecting to websocket")
websocket.enableTrace(True)
ws = websocket.WebSocketApp(socket,
                            on_message = on_message,
                            on_error = on_error,
                            on_close = on_close)
ws.run_forever()

【问题讨论】:

  • 您想知道在 Azure 中托管该代码的位置吗?如何将该数据从本地计算机输出到事件中心?或者如何在 Azure 中托管并输出到事件中心?
  • @FlorianEiden 我想在 azure 中托管它并输出到事件中心

标签: python azure websocket azure-eventhub azure-stream-analytics


【解决方案1】:

您手头有 2 个任务:

  • 将数据流发送到事件中心。我会先开始,然后在您的本地应用中使用Event Hub Python SDK
  • 在 Azure 中托管您的应用程序。在事件中心端完成后,可以在 Azure Functions 中部署应用。请参阅Python dev guide(请注意,您可以在本地 Windows 上开发,但需要部署到 Linux 运行时,但这应该不是问题)。请参阅 here 以从头开始。

函数不是唯一的选项,但这里可能是最简单的选项。请参阅that list 了解替代方案。

【讨论】:

  • 我无法理解如何使用 sdk 示例中的 send.py 将 websocket 流发送到事件中心。
  • 从示例中,await producer.send_batch(event_data_batch) 行负责发布您的事件。调用完成后,事件中心服务将确认收到您在 event_data_batch 中放置的任何事件;任何失败都会引发异常。网络细节由producer 抽象出来;它正在管理 AMQP 连接和确保传输所需的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2021-05-06
相关资源
最近更新 更多