Skip to content

Commit 0d0378e

Browse files
author
Lucas CORBEAUX
committed
Upgrading prod_trio.py to work with modern version of trio package (0.11 and newer)
- Replacing the call to trio.Queue() by trio.open_memory_channel() - Using a MemorySendChannel object in generate_data function - Using a MemoryReceiveChannel object in process_data function - Updating requirements.txt with trio v0.16.0 and trio_asyncio v0.11.0
1 parent 6c417a4 commit 0d0378e

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

src/09-built-on-asyncio/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
unsync
2-
trio==0.8.0
3-
trio_asyncio==0.9.1
2+
trio==0.16.0
3+
trio_asyncio==0.11.0
44

55
aiohttp
66
cchardet

src/09-built-on-asyncio/the_trio/prod_trio.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,32 @@ async def main():
88
t0 = datetime.datetime.now()
99
print(colorama.Fore.WHITE + "App started.", flush=True)
1010

11-
data = trio.Queue(capacity=10)
11+
send_channel, receive_channel = trio.open_memory_channel(max_buffer_size=10)
1212

1313
with trio.move_on_after(5):
1414
async with trio.open_nursery() as nursery:
15-
nursery.start_soon(generate_data, 20, data, name='Prod 1')
16-
nursery.start_soon(generate_data, 20, data, name='Prod 2')
17-
nursery.start_soon(process_data, 40, data, name='Consumer')
15+
nursery.start_soon(generate_data, 20, send_channel, name='Prod 1')
16+
nursery.start_soon(generate_data, 20, send_channel, name='Prod 2')
17+
nursery.start_soon(process_data, 40, receive_channel, name='Consumer')
1818

1919
dt = datetime.datetime.now() - t0
2020
print(colorama.Fore.WHITE + "App exiting, total time: {:,.2f} sec.".format(
2121
dt.total_seconds()), flush=True)
2222

2323

24-
async def generate_data(num: int, data: trio.Queue):
24+
async def generate_data(num: int, data: trio.MemorySendChannel):
2525
for idx in range(1, num + 1):
2626
item = idx*idx
27-
await data.put((item, datetime.datetime.now()))
27+
await data.send((item, datetime.datetime.now()))
2828

2929
print(colorama.Fore.YELLOW + f" -- generated item {idx}", flush=True)
3030
await trio.sleep(random.random() + .5)
3131

3232

33-
async def process_data(num: int, data: trio.Queue):
33+
async def process_data(num: int, data: trio.MemoryReceiveChannel):
3434
processed = 0
3535
while processed < num:
36-
item = await data.get()
36+
item = await data.receive()
3737

3838
processed += 1
3939
value = item[0]

0 commit comments

Comments
 (0)