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

企业做外贸网站常用术语wordpress修改后台没反应

企业做外贸网站常用术语,wordpress修改后台没反应,网易黄页,毕设做的网站可以用模板改吗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://www.15wanjia.com/news/193045.html

相关文章:

  • 怎么做百度搜到的网站免费的中山哪里做网站
  • 浙江 网站备案网站开发的概念
  • 双峰做网站互联网销售平台有哪些
  • 苏州 营销型网站 高端网站珠海做网站哪家最专业
  • 网站后台要怎么做网站平台怎么做的
  • 有什么网站可以免费挑号网站后台怎么更新
  • 北京网站制作出名 乐云践新网站的内容规划怎么写
  • 网站建设洽谈问题怎么制作学校网站
  • 怎么查网站备案域名响应式布局网站案例
  • 深圳响应式网站价格品牌策划与管理
  • 点匠网站开发流程电子商务网站建设及推广
  • 容桂做pc端网站怎么自己开发网站
  • 一个网站的主题和设计风格携程网站官网
  • 株洲做网站优化做更好的自己 网站
  • 怎么建设一个网站做网站 怎么样找客户
  • 股票网站排名哪个好企业微信登录
  • 网站设计宁波河北华宇建设集团有限公司网站
  • 做网站是不是需要服务器哈尔滨网站制作公司有哪些
  • 做盗版网站的怎么开网店卖东西
  • 企业个人网站wordpress上长缺少临时文件夹
  • 响应式网站的字体设置专业公司标志设计
  • 网架公司和网架加工厂的区别宁波信誉好全网seo优化
  • 哪些网站做平面单页好看防伪网站模板
  • 微孝感网站建设网站设置时间段访问
  • 高校网站建设 调查上海有什么公司名称
  • 桂林生活网官网企业seo价格查询价格
  • 做网站上海驻马店市住房和城乡建设局网站
  • 公司中英文网站西安高端网站开发
  • 建设网站建设的目标自适应手机模板
  • 自做网站域名重定向系统开发需求文档