When should I use asyncio.Semaphore instead of asyncio.Queue for concurrency limits?
I'm comparing two common ways to control concurrency in asyncio. With a semaphore, I can allow up to a fixed number of operations at once: `sem = asyncio.Semaphore(10)`…