【发布时间】:2018-06-25 21:10:33
【问题描述】:
我面临的问题是,我试图从单个 WebSocket 中提取小数据包中的高频数据,然后将其推送到我的 AWS Kinesis Steam 进行处理。我正在使用 Python v3.6。
目前我正在使用 pythons 同步 Web 套接字库 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)
【问题讨论】:
标签: python performance sockets websocket io