我正在编写一个 python 接口,它基本上从一个 db 逐行构造,将流发送到 tcp 套接字,另一个线程检查 tcp 响应并确定是否有错误响应,跳过某些流并从早期的重试。
下面的伪代码,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 socketread
线程在响应中发现一些错误时,返回了 msg 的 pk,所以我需要从pk
所以这是我的问题:
- 可以向前和向后移动的迭代器的设计模式是什么,尤其是。使用数据库行游标
- 我可以在不阅读整个列表的情况下首先获得迭代器的总数吗?
- 我的方案的一般建议是什么?
谢谢