@@ -645,29 +645,31 @@ async def q_task_done_join_consumer(q):
645
645
print ('consumer' , 'got/processing {}' .format (r ))
646
646
await asyncio .sleep (.5 )
647
647
q .task_done ()
648
- async def q_task_done_join_producer (q ):
649
- print ('producer' ,'loading jobs' )
650
- for x in range (10 ):
651
- await q .put (x )
652
- print ('producer' ,'await q.join' )
648
+ async def q_task_done_join_waiter (q ):
649
+ print ('waiter' ,'await q.join' )
653
650
await q .join ()
654
- print ('producer ' ,'joined!' , 'task done!' )
651
+ print ('waiter ' ,'joined!' , 'task done!' )
655
652
async def q_task_done_join_go ():
656
653
q = Queue ()
657
654
655
+ #empty queue should not block join
656
+ print ('test' , 'await empty q.join' )
657
+ await q .join ()
658
+ print ('test' , 'pass' )
659
+
658
660
consumer_task = asyncio .create_task (q_task_done_join_consumer (q ))
659
- producer_task = asyncio .create_task (q_task_done_join_producer (q ))
660
- await asyncio .sleep (0 )
661
+ waiter_task = asyncio .create_task (q_task_done_join_waiter (q ))
662
+
663
+ #add jobs
664
+ for x in range (10 ):
665
+ await q .put (x )
661
666
662
667
print ('test' ,'await q.join' )
663
668
await q .join ()
664
669
print ('test' ,'all jobs done!' )
665
670
666
- print ('test' ,'join again' )
667
- await q .join ()
668
-
669
671
await asyncio .sleep (0 )
670
- print ('test' ,'producer_task .done()?' , producer_task .done ())
672
+ print ('test' ,'waiter_task .done()?' , waiter_task .done ())
671
673
672
674
consumer_task .cancel ()
673
675
await asyncio .gather (consumer_task , return_exceptions = True )
@@ -677,10 +679,11 @@ async def q_task_done_join_go():
677
679
678
680
def q_task_done_join_test ():
679
681
printexp ('''Test Queue task_done/join behaviors
680
- producer loading jobs
681
- producer await q.join
682
+ test await empty q.join
683
+ test pass
682
684
test await q.join
683
685
consumer got/processing 0
686
+ waiter await q.join
684
687
consumer got/processing 1
685
688
consumer got/processing 2
686
689
consumer got/processing 3
@@ -690,10 +693,9 @@ def q_task_done_join_test():
690
693
consumer got/processing 7
691
694
consumer got/processing 8
692
695
consumer got/processing 9
693
- producer joined! task done!
694
696
test all jobs done!
695
- test join again
696
- test producer_task .done()? True
697
+ waiter joined! task done!
698
+ test waiter_task .done()? True
697
699
test DONE
698
700
''' , 5 )
699
701
asyncio .run (q_task_done_join_go ())
0 commit comments