私は基本的にdbから行ごとに構築し、ストリームをtcpソケットに送信し、別のスレッドがtcp応答をチェックしてエラー応答があるかどうかを判断し、特定のスチームをスキップして以前のスチームから再試行するPythonインターフェースを作成しています。
以下の擬似コード、PKはPrimaryKeyを意味します。
基本的にはこんな感じです
def generate_msg(pk_start, pk_stop):
for x in db.query(pk>pk_startand pk<pk_stop):
yield pack_to_stream(x)
その場合、tcpソケット送信スレッドは次のようになります。
for msg in generate_msg(first_id, last_id):
socket.send(msg)
問題は、tcpソケットread
スレッドが応答でエラーを検出すると、msgのpkが返されるため、イテレータをから再起動する必要があることです。pk
だからここに私の質問があります:
- 特に、前後に移動できるイテレータの設計パートナーは何ですか。データベース行カーソルの操作
- リスト全体を読まなくても、そもそもイテレータの総数を取得できますか?
- 私のシナリオの一般的なアドバイスは何ですか?
ありがとう