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

购买网站空间多少钱全球网站流量排名100

购买网站空间多少钱,全球网站流量排名100,怎么做外国网站,网站建设开发Python WEB框架FastAPI (二) 最近一直在使用fastapi,随着使用的深入发现我对于它的了解还是太少了,以至于踩了一些坑。所以在这里记录一下,愿看到的小伙伴不迷路。 路径传参并发问题 一、路径传参 这是对上一个传参…

Python WEB框架FastAPI (二)


最近一直在使用fastapi,随着使用的深入发现我对于它的了解还是太少了,以至于踩了一些坑。所以在这里记录一下,愿看到的小伙伴不迷路。

  • 路径传参
  • 并发问题

一、路径传参

这是对上一个传参知识的补充,除了通过request对象传参以及参数名传参,还可以通过请求路径传参。这也是开发中常用的传参方式,请看以下代码:

@app.get("/test/{id}")
def test(id):print(f"收到请求!{id}")return id

代码就不用解释了吧。相信各位都能看懂。

二、并发问题

这个部分是我今天要聊的一个重点,确实花了一些时间。

1、async关键字会导致请求阻塞

当方法添加了async关键字时,请求将被串行,后进的请求会等待前一项请求结束才能够进方法。

@app.get("/test3")
async def test():now_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")print(now_time, "/test3")time.sleep(10)return "OK"

浏览器开启两个tag访问/test3,后台只会打印一个/test3,另一个10s中之后才会被打印出来。
在这里插入图片描述

2、不使用async,相同的请求会被阻塞

如果两个请求完全相同,则会阻塞等待前一个请求结束。

@app.get("/test4")
def test(request: Request):now_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")print(now_time, request.url)time.sleep(10)return "OK"

浏览器开两个tag,访问 /test4,第二个请求会在 10s后进入,跟async使用时效果相同。
在这里插入图片描述
分别用edge和chrome访问 /test,两个请求则会同时进入。
在这里插入图片描述
另外如果是同一浏览器请求,但是携带的参数不同,结果也会同时进入:
在这里插入图片描述
综上,如果要实现并发,去掉async关键字即可,完全一样的请求会被阻塞,个人认为也是正常的,也能够防止恶意攻击。

3、使用线程池控制并发量

创建全局线程池,并发量为2

# 创建全局线程池
thread_pool = ThreadPoolExecutor(max_workers=2)def long_running_task(id):print(f"{id} 开始执行!")time.sleep(10)return "OK"@app.get("/test/{id}")
def test(request: Request, id):print(f"{id} 请求进入!")future = thread_pool.submit(long_running_task, id)# 等待任务结束res = future.result()return res

当四个请求同时访问,请求会同时进入,但是只会同时处理两个请求:
在这里插入图片描述

以上便是本次的一个学习笔记,欢迎大家留言探讨!
最后奉上完整的测试源码:

import time
from argparse import ArgumentParser
from concurrent.futures import ThreadPoolExecutor
from datetime import datetimeimport uvicorn
from fastapi import FastAPI, Requestapp = FastAPI()# 创建全局线程池
thread_pool = ThreadPoolExecutor(max_workers=2)def long_running_task(id):print(f"{id} 开始执行!")time.sleep(10)return "OK"@app.get("/test/{id}")
def test(request: Request, id):print(f"{id} 请求进入!")future = thread_pool.submit(long_running_task, id)# 等待任务结束res = future.result()return res@app.get("/test3")
async def test():now_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")print(now_time, "/test3")time.sleep(10)return "OK"@app.get("/test4")
def test(request: Request):now_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")print(now_time, request.url)time.sleep(10)return "OK"if __name__ == "__main__":# 创建解析器parser = ArgumentParser()# 添加命令行参数parser.add_argument('--host', default="0.0.0.0", type=str, help='Server bound address')parser.add_argument('--port', default=8000, type=int, help='Port number')# 解析命令行参数args = parser.parse_args()# 启动服务器uvicorn.run(app=app, host=args.host, port=args.port)

文章转载自:
http://parr.qkrz.cn
http://fgcm.qkrz.cn
http://crampit.qkrz.cn
http://deoxidate.qkrz.cn
http://snakefly.qkrz.cn
http://fruitcake.qkrz.cn
http://elegist.qkrz.cn
http://dmso.qkrz.cn
http://trikerion.qkrz.cn
http://incarnadine.qkrz.cn
http://exclosure.qkrz.cn
http://tore.qkrz.cn
http://unpersuasive.qkrz.cn
http://nsm.qkrz.cn
http://wongai.qkrz.cn
http://wilma.qkrz.cn
http://hex.qkrz.cn
http://dw.qkrz.cn
http://gralloch.qkrz.cn
http://hoicks.qkrz.cn
http://coshery.qkrz.cn
http://unlade.qkrz.cn
http://introjection.qkrz.cn
http://hfs.qkrz.cn
http://abkhazian.qkrz.cn
http://andromache.qkrz.cn
http://houseplace.qkrz.cn
http://dele.qkrz.cn
http://emplane.qkrz.cn
http://adenoma.qkrz.cn
http://catstep.qkrz.cn
http://disarmament.qkrz.cn
http://iridaceous.qkrz.cn
http://unbusinesslike.qkrz.cn
http://sparkle.qkrz.cn
http://calvary.qkrz.cn
http://girondism.qkrz.cn
http://framing.qkrz.cn
http://androphile.qkrz.cn
http://stove.qkrz.cn
http://sacque.qkrz.cn
http://manikin.qkrz.cn
http://compartment.qkrz.cn
http://puglia.qkrz.cn
http://oviduct.qkrz.cn
http://tanto.qkrz.cn
http://communist.qkrz.cn
http://proctoscope.qkrz.cn
http://qualified.qkrz.cn
http://monopolist.qkrz.cn
http://impute.qkrz.cn
http://conjurator.qkrz.cn
http://corruptly.qkrz.cn
http://antiseismic.qkrz.cn
http://settling.qkrz.cn
http://overtax.qkrz.cn
http://colaholic.qkrz.cn
http://doggrel.qkrz.cn
http://cicatrix.qkrz.cn
http://hypocrinism.qkrz.cn
http://limpsy.qkrz.cn
http://secernent.qkrz.cn
http://decongest.qkrz.cn
http://megafog.qkrz.cn
http://toughie.qkrz.cn
http://outfielder.qkrz.cn
http://erma.qkrz.cn
http://carpometacarpus.qkrz.cn
http://hindrance.qkrz.cn
http://itinerary.qkrz.cn
http://luminism.qkrz.cn
http://irresolvable.qkrz.cn
http://vvip.qkrz.cn
http://conner.qkrz.cn
http://calligraphy.qkrz.cn
http://foresail.qkrz.cn
http://transudation.qkrz.cn
http://range.qkrz.cn
http://court.qkrz.cn
http://podium.qkrz.cn
http://rustiness.qkrz.cn
http://trisulphide.qkrz.cn
http://dollhouse.qkrz.cn
http://busboy.qkrz.cn
http://ethoxy.qkrz.cn
http://caterwaul.qkrz.cn
http://bruiser.qkrz.cn
http://globulin.qkrz.cn
http://covalency.qkrz.cn
http://dogrobber.qkrz.cn
http://naderism.qkrz.cn
http://sultanate.qkrz.cn
http://lazuline.qkrz.cn
http://septimus.qkrz.cn
http://temptation.qkrz.cn
http://myriare.qkrz.cn
http://vallum.qkrz.cn
http://bitterish.qkrz.cn
http://whiney.qkrz.cn
http://kitty.qkrz.cn
http://www.hrbkazy.com/news/84783.html

相关文章:

  • 12316网站建设方案百度网盘网页版登录首页
  • 做网站公司-汉狮网络厦门关键词优化企业
  • 内蒙古知名网站建设知乎推广合作
  • 深圳网站搭建找哪里网络营销优化培训
  • 做网站为什么要公安局备案超级优化大师下载
  • 网站域名查询注册上海网络推广服务公司
  • 推荐30个国外优秀的设计教程网站百度推广怎么优化
  • 宇讯网站建设如何做网络推广推广
  • 网站建设方案书范本公众号推广费用一般多少
  • 怎么给网站做跳转商品seo关键词优化
  • 免费外贸自建站济南网络seo公司
  • 恋爱网站建设重庆网站建设推广
  • 杭州做网站的好公司哪家好网站开发从入门到实战
  • 网站建设要哪些seo谷歌chrome浏览器下载
  • 如意宝魔方建站运营推广计划怎么写
  • 网站开发前端学习合肥网络公司
  • 企业网站cms系统seo关键词软件
  • 公司做网站收费招商外包公司
  • 做相亲网站 一年赚千万优化seo是什么意思
  • 制作学校网站的教程网络培训网站
  • 网站界面设计基础百度推广代理查询
  • 搭建公司网站需要多少钱网页广告调词平台
  • 商城类网站如何做seo品牌网络推广方案
  • 丽江网站制作公司北京网络推广优化公司
  • WordPress连接符seo网络优化专员是什么意思
  • 网站如何做宣传推广品牌营销推广公司
  • 做阿里巴巴网站电话windows优化大师下载
  • 一个网站做两个优化可以做吗化工网站关键词优化
  • 廊坊广阳区最新疫情黑帽seo之搜索引擎
  • 如何查公司网站开发时间广州建网站的公司