私は断続的にPythonを使用しています。私はAPIを介してブローカーアプリケーションから市場データと注文データを受け取るためにソケットモジュールを使用しています。私はまだヘッダー情報に基づいて、複数のデータの長さとヘッダーを受信するコードをする方法を混乱させる、私はデータを扱います。複数のデータ長をソケットストリーミングサーバーから受信しました - PYTHON3
複数のデータ長を受け取る方法と正しいstruct format関数でアンパックする方法を教えてください。
while True:
try:
"""
continously receive data from Server API (stock Market data streaming)
"""
brecvd = self.sock.recv(1024)
self.brecvdsize = len(brecvd)
# Unpack the header for correct struct formate to unpack
unpkr = self.struct.Struct('<lh')
recvd =self.struct.Struct.unpack_from(unpkr, brecvd)
Marketdepth = recvd[0] == 284 and recvd[1] == 26
Indices = recvd[0] == 228 and recvd[1] == 27
Feed = recvd[0] == 384 and recvd[1] == 22
BidOffer = recvd[0] == 145 and recvd[1] == 28
Msg = recvd[0] == 360 and recvd[1] == 99
#Msg to be checked for 260 or 360
if Marketdepth:
self.Marketdepthresponse(brecvd)
Marketdepth = False
elif Indices:
self.Indicesresponse(brecvd)
Indices = False
elif Feed:
self.feedresponse(brecvd)
Feed = False
elif BidOffer:
self.Bidoffer(brecvd)
BidOffer = False
elif Msg:
self.GeneralMsg(brecvd)
Msg = False
else:
Marketdepth = False
Indices = False
Feed = False
BidOffer = False
Msg = False
pass
except Exception as e:
self.errorcount += 1
print('***Run Loop Receive Issue: {0}'.format(str(e)))
私はあなたのextreamの知識から次のことを知りたいと思います。注:メソッド 'StartTTAPI'が呼び出され、スレッドで実行されています。 複数のデータ長を受け取る方法と正しいstruct format関数で解凍する方法を教えてください。 多くの場合、例外 'struct.error'が取得されます。アンパックには、長さxxxのバイトオブジェクト(すべてのアンパックメソッド用)が必要です 数分後にサーバーからデータが受信されませんが、サーバーはデータをストリーミングしています サーバーがデータをストリーミングしている間にすべてのデータを受信しておらず、例外またはエラーをスローしません。 –