私はasyncio
に非常に新しく、より良いプラクティス、プロトコル、またはストリームという点で、どのAPIが他のAPIより優れているのだろうかと疑問に思っていましたか?asyncioでプロトコルまたはストリームを使用する必要がありますか?
私には、すでにconnection_made
とdata_received
メソッドが提供されているので、私にはprotocol(callback based API)
が使いやすいようです。 streams(coroutine based API)
を使用すると、接続を管理してデータを自分で読み取る必要がありますが、それはcoroutine
のコンセプトを利用しているような気がします。
これは受信データを聞く方法であり、私にとっては気分が悪いです。 readeexactly
も使用できますが、時にはIncompleteReadError
が発生します。
message_body = b''
message_length = SOME_NUMBER
while True:
while len(message_body) < message_length:
try:
message_body_chunk = await reader.read(message_length - len(message_body))
except Exception as e:
self.logger.error(e)
return
if not message_body_chunk:
return
message_body += message_body_chunk