WebSocket#
WebSocket 模块允许您通过同步和异步客户端从 Yahoo Finance 实时流式传输价格数据。
类#
|
用于实时价格数据流的同步WebSocket客户端。 |
|
用于实时价格数据流的异步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()