"Frank Millman" wrote in message news:n8et0d$hem$1...@ger.gmane.org...
I have read the other messages, and I can see that there are some clever
ideas there. However, having found something that seems to work and that I
feel comfortable with, I plan to run with this for the time being.
A quick update.
Now that I am starting to understand this a bit better, I found it very easy
to turn my concept into an Asynchronous Iterator.
class AsyncCursor:
def __init__(self, loop, sql):
self.return_queue = asyncio.Queue()
request_queue.put((self.return_queue, loop, sql))
async def __aiter__(self):
return self
async def __anext__(self):
row = await self.return_queue.get()
if row is not None:
return row
else:
self.return_queue.task_done()
raise StopAsyncIteration
The caller can use it like this -
sql = 'SELECT ...'
cur = AsyncCursor(loop, sql)
async for row in cur:
print('got', row)
Frank
--
https://mail.python.org/mailman/listinfo/python-list