当前位置: 首页 > news >正文

小网站的制作wordpress哪个模板好

小网站的制作,wordpress哪个模板好,数据分析师证书,深圳 电子商务网站开发客户端发送http请求进行流量控制 实现方式 1#xff1a;使用 Semaphore (信号量) 控制流量 asyncio.Semaphore 是一种简单的流控方法#xff0c;可以用来限制并发请求数量。 import asyncio import aiohttp import timeclass HttpClientWithSemaphore:def __init__(self, …客户端发送http请求进行流量控制 实现方式 1使用 Semaphore (信号量) 控制流量 asyncio.Semaphore 是一种简单的流控方法可以用来限制并发请求数量。 import asyncio import aiohttp import timeclass HttpClientWithSemaphore:def __init__(self, max_concurrent_requests5, request_period10):self.max_concurrent_requests max_concurrent_requestsself.request_period request_periodself.semaphore asyncio.Semaphore(max_concurrent_requests)self.session aiohttp.ClientSession()async def fetch(self, url):async with self.semaphore:try:async with self.session.get(url) as response:return await response.text()except Exception as e:print(fRequest failed: {e})return Noneasync def close(self):await self.session.close()async def main_with_semaphore():client HttpClientWithSemaphore(max_concurrent_requests5)urls [http://example.com/api/1,http://example.com/api/2,http://example.com/api/3,http://example.com/api/4,http://example.com/api/5,http://example.com/api/6,]tasks [client.fetch(url) for url in urls]responses await asyncio.gather(*tasks)for response in responses:if response:print(response)await client.close()if __name__ __main__:asyncio.run(main_with_semaphore())优点 简单易实现使用内置的 asyncio.Semaphore 就能限制并发请求数量。易于维护代码简单清晰。 缺点 缺少精细的流控机制例如每 10 秒内限制请求数量只能控制总并发数量。难以适应更加复杂的流控需求。 实现方式 2使用滑动窗口 (Sliding Window) 算法 滑动窗口算法是一种可以精确控制在一定时间内的请求数量的机制。它能平滑地调整速率。 import asyncio import aiohttp from collections import deque import timeclass SlidingWindowRateLimiter:def __init__(self, max_requests, window_seconds):self.max_requests max_requestsself.window_seconds window_secondsself.timestamps deque()async def acquire(self):current_time time.monotonic()# 清理超出窗口时间的旧请求while self.timestamps and current_time - self.timestamps[0] self.window_seconds:self.timestamps.popleft()if len(self.timestamps) self.max_requests:self.timestamps.append(current_time)return Trueelse:# 计算需要等待的时间sleep_time self.window_seconds - (current_time - self.timestamps[0])await asyncio.sleep(sleep_time)return await self.acquire()class HttpClientWithSlidingWindow:def __init__(self, max_requests_per_period5, period10):self.rate_limiter SlidingWindowRateLimiter(max_requests_per_period, period)self.session aiohttp.ClientSession()async def fetch(self, url):await self.rate_limiter.acquire()try:async with self.session.get(url) as response:return await response.text()except Exception as e:print(fRequest failed: {e})return Noneasync def close(self):await self.session.close()async def main_with_sliding_window():client HttpClientWithSlidingWindow(max_requests_per_period5, period10)urls [http://example.com/api/1,http://example.com/api/2,http://example.com/api/3,http://example.com/api/4,http://example.com/api/5,http://example.com/api/6,]tasks [client.fetch(url) for url in urls]responses await asyncio.gather(*tasks)for response in responses:if response:print(response)await client.close()if __name__ __main__:asyncio.run(main_with_sliding_window())优点 更加精确地控制时间窗口内的请求数量。平滑控制请求速率适用于需要稳定流量的情况。 缺点 实现稍复杂需要维护一个请求时间戳队列。在极端条件下如果有大量请求积压可能会造成延迟波动。 实现方式 3使用 aiolimiter 第三方库 aiolimiter 是一个专门用于异步流控的 Python 库支持令牌桶和滑动窗口算法。 安装 aiolimiter pip install aiolimiter代码示例 import asyncio import aiohttp from aiolimiter import AsyncLimiterclass HttpClientWithAiolimiter:def __init__(self, max_requests_per_period5, period10):# 初始化流控器每10秒允许5个请求self.limiter AsyncLimiter(max_requests_per_period, period)self.session aiohttp.ClientSession()async def fetch(self, url):async with self.limiter:try:async with self.session.get(url) as response:return await response.text()except Exception as e:print(fRequest failed: {e})return Noneasync def close(self):await self.session.close()async def main_with_aiolimiter():client HttpClientWithAiolimiter(max_requests_per_period5, period10)urls [http://example.com/api/1,http://example.com/api/2,http://example.com/api/3,http://example.com/api/4,http://example.com/api/5,http://example.com/api/6,]tasks [client.fetch(url) for url in urls]responses await asyncio.gather(*tasks)for response in responses:if response:print(response)await client.close()if __name__ __main__:asyncio.run(main_with_aiolimiter())优点 使用方便aiolimiter 直接支持流控机制。代码简洁且配置灵活可直接设置流控参数。第三方库已经过优化适合快速开发。 缺点 依赖于外部库需要额外安装。灵活性相对有限无法完全控制算法的细节。 比较总结 实现方式优点缺点适用场景信号量控制 (Semaphore)简单易实现易于维护控制粒度较粗不适合复杂流控适合简单并发控制场景滑动窗口 (Sliding Window)精确控制时间窗口内的请求数量平滑控制请求速率实现稍复杂可能出现延迟波动适合需要精确流控的场景aiolimiter 第三方库使用方便代码简洁库优化良好依赖外部库灵活性相对有限适合快速实现流控的项目 希望这些不同的实现方式和比较能够帮助你选择适合的 HTTP 客户端实现方案。如果你对某种实现方式有特别的需求或疑问请随时告知
http://www.hkea.cn/news/14398864/

相关文章:

  • 网站建立的仿新浪首页网站模板
  • sem包括网站建设吗直接玩的网页游戏
  • tomcat做网站属于什么安贞网站建设公司
  • 免费企业建站模板wordpress加载
  • 怎么做垂直门户网站h5做的网站有哪些
  • 厦门网站公司上海建网站公司排名
  • 做经营行网站需要什么手续石家庄专业做网站公司
  • 阜新网站建设公司广州私人做网站
  • 网站反链暴增怎么回事扬州市城市建设监察支队网站
  • 北关网站制作ps 做儿童摄影网站首页
  • 天津网站建设方案服务外贸平台运营模式
  • 展示型网站设计北京赛车网站建设
  • 淘宝加盟网站建设企业的漏沟设计公司
  • 濮阳团购网站建设网址的输入格式是什么样的
  • 单位网站建设公司个人怎么做互联网推广平台
  • 秀山网站建设公司老河口网站
  • 建设银行官方网站 诚聘英才太原百度网站建设
  • 哪家做网站的好网站域名的设置
  • 汕头网站开发做视频的软件模板下载网站有哪些
  • 关键词代发包收录新站seo快速排名 排名
  • 怎么使用vs2017做网站马帮erp是干嘛的
  • 长春网站建设 4435seo提升排名
  • wap网站的未来赣州人才网招聘
  • 网站设计制作有哪些原因常州高端网站制作公司排名
  • wordpress标题调用企业网站seo外包
  • 黄江镇网站建设公司提交网站入口
  • 可信网站认证服务商营销型网站与展示型网站
  • 域名如何解析别人网站潍坊网站制作网络科技
  • 广州企业建站 网络服务江门网站推广公司
  • 做马来西亚生意的网站淘宝代运营是什么意思