Session Push
Tarantool 1.10 introduced session pushes which gives an ability to receive out of bound notifications from Tarantool server
For example let’s consider this simple example:
function sub(n)
for i=1,n do
box.session.push(i, i * i)
end
return 'done'
end
This function will yield n push messages to the client before returning.
To receive such notification in Python using asynctnt we need to subscribe
first for these notifications and then use PushIterator to iterate over
all the messages from Tarantool:
import asyncio
import asynctnt
async def main():
async with asynctnt.Connection(port=3301) as conn:
fut = conn.call('sub', [10], push_subscribe=True)
it = asynctnt.PushIterator(fut)
async for value in it:
print(value)
asyncio.run(main())
This will produce the following output:
$ python example.py
[1, 1]
[2, 4]
[3, 9]
[4, 16]
[5, 25]
In order to receive a return value you can simply await on the initially
returned future from the call() method:
import asyncio
import asynctnt
async def main():
async with asynctnt.Connection(port=3301) as conn:
fut = conn.call('sub', [10], push_subscribe=True)
it = asynctnt.PushIterator(fut)
async for value in it:
print(value)
print(await fut) # receive the response
asyncio.run(main())