async semphore
1、Semaphore 是协程中用于控制某资源同时被访问的个数
2、Semaphore 维护了当前访问的个数,提供同步机制,控制同时访问的个数
async def main(self):
tasks = []
# 在调用协程之前实例化一个信号量
local_data, details_data = await self.get_local_data()
semaphore = asyncio.BoundedSemaphore(10)
for kol in local_data:
# 将信号量传递给将进行限制的协程
task = asyncio.create_task(self.pc_crawl(kol, details_data, semaphore))
tasks.append(task)
for task in tasks:
await task
async def pc_crawl(self, kol, details_data, semaphore):
# 只有在信号量可以被获取的情况下才能进入
async with semaphore:
async with httpx.AsyncClient() as client:
...