WebSocket#

WebSocket 模块允许您通过同步和异步客户端从 Yahoo Finance 实时流式传输价格数据。

#

WebSocket([url, verbose])

用于实时价格数据流的同步WebSocket客户端。

AsyncWebSocket([url, verbose])

用于实时价格数据流的异步WebSocket客户端。

同步WebSocket#

WebSocket 类提供了一个同步接口用于订阅价格更新。

示例代码:

import yfinance as yf

# define your message callback
def message_handler(message):
    print("Received message:", message)

# =======================
# With Context Manager
# =======================
with yf.WebSocket() as ws:
    ws.subscribe(["AAPL", "BTC-USD"])
    ws.listen(message_handler)

# =======================
# Without Context Manager
# =======================
ws = yf.WebSocket()
ws.subscribe(["AAPL", "BTC-USD"])
ws.listen(message_handler)

异步WebSocket#

AsyncWebSocket 类提供了一个异步接口用于订阅价格更新。

示例代码:

import asyncio
import yfinance as yf

# define your message callback
def message_handler(message):
    print("Received message:", message)

async def main():
    # =======================
    # With Context Manager
    # =======================
    async with yf.AsyncWebSocket() as ws:
        await ws.subscribe(["AAPL", "BTC-USD"])
        await ws.listen()

    # =======================
    # Without Context Manager
    # =======================
    ws = yf.AsyncWebSocket()
    await ws.subscribe(["AAPL", "BTC-USD"])
    await ws.listen()

asyncio.run(main())

注意

如果您在Jupyter笔记本中运行异步代码,可能会遇到事件循环的问题。要解决这个问题,您需要导入并应用nest_asyncio以允许嵌套事件循环。

在运行异步操作之前添加以下代码:

import nest_asyncio
nest_asyncio.apply()