gpt4 book ai didi

python - 从 WebSocket 中提取数据的最快方法

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:07 25 4
gpt4 key购买 nike

我面临的问题是,我试图从单个 WebSocket 中以小数据包的形式提取高频数据,然后将其推送到我的 AWS Kinesis Steam 进行处理。我正在使用 Python v3.6。

目前,我正在使用 python 同步网络套接字库 websocket-client,并且在拉取和推送到我的 Stream 时没有问题。

我最好为异步套接字使用 WebSockets 库吗?我担心 WebSocket 请求循环结构中的阻塞可能是一个瓶颈。

while True:
session = boto3.Session(aws_key, aws_secretkey)
kinesis = session.client('kinesis', region_name='us-east-1')
conn = ws.create_connection(url, sslopt={"cert_reqs": ssl.CERT_NONE})
count = 0
data = []
try:
while True:
msg = json.dumps(json.loads(conn.recv())['data'])
data.append({'Data':msg, 'PartitionKey':'trade'})
count += 1
if count == 100:
kinesis.put_records(StreamName = 'Binance_Stream', Records = data)
count = 0
data = []
print('100 msg posted')
except (ws.WebSocketConnectionClosedException, SQLAlchemyError) as e:
print('Connection Error: ' + e)

最佳答案

以并行方式运行 websocket 客户端的最简单方法是利用 Python 库 Gevent .

这将使您能够并行运行您的客户端,而无需触及您现有的代码(太多)。您只需要管理 Greenlets(某种线程,但更安全、更易于处理,强烈推荐用于 IO 操作)。

关于python - 从 WebSocket 中提取数据的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48293456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com