首页 > 编程语言 >[Day4]PythonAdvanced-学习笔记

[Day4]PythonAdvanced-学习笔记

时间:2024-11-29 21:22:30浏览次数:6  
标签:异步 FastAPI Day4 笔记 fetch async app PythonAdvanced asyncio

[PythonAdvanced] 学习笔记 - Day 4

概览

Date: 2024-11-29 Time Spent: 6 hours

Topics: FastAPI Difficulty: ⭐⭐⭐ (1-5 ⭐)

今日计划

学习内容

  1. [Fast API]

    • Main points:

      FastAPI是一个用于构建API的现代、快速(高性能)的Web框架。FastAPI 使用定义 API 的 OpenAPI 标准将你的所有 API 转换成「模式」。架构组成如下:

      • Starlette:负责Web端(请求路由、并发),需要一个ASGI(Asynchronous Server Gateway Interface,是Python的Web服务器和应用程序服务器之间的接口规范)。它允许开发者使用异步编程模型来处理HTTP请求和响应,以提高服务器的性能和可扩展性。
      • Pydantic:负责传入数据校验部分,具体运用到的地方就是类似于参数校验。
    • Example Code

      #每当 FastAPI 接收一个使用 GET 方法访问 URL「/」的请求时这个函数会被调用。
      from fastapi import FastAPI
      
      app = FastAPI()
      
      @app.get("/") 
      async def root():
          return {"message": "Hello World"}
      
      

      *在cmd/teriminal等终端以uvicorn运行,例uvicorn main:app --reload

  2. [Concurrent 并发]

    • Main points:

      它被称为"异步"的原因是因为计算机/程序不必与慢任务"同步",去等待任务完成的确切时刻,而在此期间不做任何事情直到能够获取任务结果才继续工作。作为一个"异步"系统,一旦完成,任务就可以排队等待一段时间(几微秒),等待计算机程序完成它要做的任何事情,然后回来获取结果并继续处理它们。async 关键字用于声明一个异步函数。这样的函数会返回一个 Promise 对象。await 关键字用于等待一个 Promise 完成,并且它会暂停当前 async 函数的执行,直到 Promise 被解决(resolve)或拒绝(reject)。await可以用来等待多个异步函数进行完成,提高效率。[Parallel 并行] 在等待期间无法进行其他操作,只有等待直到完成。

    • Example code

      import asyncio
      
      async def fetch_data1():
          await asyncio.sleep(2)  # 模拟网络请求延迟2秒
          print('Data 1 fetched')
      
      async def fetch_data2():
          await asyncio.sleep(1)  # 模拟网络请求延迟1秒
          print('Data 2 fetched')
      
      async def main():
          print('Start fetching...')
          
          # 使用 asyncio.gather 同时运行 fetch_data1 和 fetch_data2
          await asyncio.gather(fetch_data1(), fetch_data2())
          
          # 等待两个异步函数都完成后,再执行后续操作
          print('Both data fetched')
      
      # 运行异步主函数
      asyncio.run(main())
      

代码练习

import asyncio
from fastapi import FastAPI

app=FastAPI()
@app.get('/') #告诉 FastAPI 在它下方的函数负责处理如下访问请求:
#请求路径为 / (根目录) ,使用 get 操作
async def root():
    return {'message':'Hello World'}
#终端命令:uvicorn main:app --reload。
#其中,main是Python文件的名称(不带.py后缀),app是FastAPI实例的名称。
# --reload选项使得代码更改后自动重新加载服务器,非常适合开发时使用。
"""
POST:创建数据。
GET:读取数据。
PUT:更新数据。
DELETE:删除数据。
"""
"""
在FastAPI框架中,不需要(也不应该)自己调用asyncio.run()来运行异步视图函数。
FastAPI和Uvicorn会为您处理异步执行。
"""
#asyncio.run(root())

遇见的挑战难及解决方法和笔记点见注释。

The challenges encountered, solutions, and key points for note-taking are indicated in the comments.

资源推荐

明日计划

标签:异步,FastAPI,Day4,笔记,fetch,async,app,PythonAdvanced,asyncio
From: https://www.cnblogs.com/m-t-arden/p/18577565

相关文章

  • 11月29日记录(《代码大全》(第二版)精读笔记)
    在《代码大全》(第二版)中,系统考虑部分是对软件开发过程中的系统性思维和整体设计的重要探讨。作者史蒂夫·麦克康奈尔强调,软件开发不仅仅是编写代码,更是一个复杂系统的构建过程,涉及多个层面的考虑,包括需求分析、架构设计、模块划分、接口设计等。以下是对系统考虑部分的精读笔记。......
  • 【Python-Open3D学习笔记】005Mesh相关方法
    TriangleMesh相关方法文章目录TriangleMesh相关方法1.查看mesh三角形面信息2.可视化三角形3.上采样4.计算mesh形成的面积和体积1.查看mesh三角形面信息defview_hull_triangles(hull:o3d.geometry.TriangleMesh):"""查看mesh三角形面信息(顶点索引......
  • C语言笔记--函数
    C语言中函数的分类1.库函数2.自定义函数库函数那怎么学习库函数呢?简单看看:www.cplusplus.com简单的总结,C语言常用的库函数都有:IO函数字符串操作函数字符操作函数内存操作函数时间/日期函数数学函数其他库函数注:但是库函数必须知道的一个秘密就是:使用库函数,必须......
  • 学习笔记043——HashMap源码学习1
    文章目录1、HashMap2、Hashtable3、TreeMap4、HashMap底层结构4.1、什么是红黑树?1、HashMapHashMapkey是不能重复的,value可以重复底层结构key-value进行存储,key-value存入到Set中,再将Set装载到HashMappackagecom.southwind;importjava.util.*;......
  • 《Python初学习笔记》
    一、对python的认识Python是由“龟叔”创造的编程语言,不仅可以做日常办公自动化的事,还能搭网站、当网络游戏后台。但像做操作系统、3D游戏和手机应用就不太合适。而且运行有点慢,代码加密也难搞。二、安装过程Windows系统:轻松访问Python官网,下载适合的安装包,双击运行,选择......
  • Vulnhub-Earth靶机笔记
    Earth靶机笔记概述这是一台Vulnhub的靶机,主要是Earth靶机地址:https://vulnhub.com/entry/the-planets-earth,755/#download一、nmap扫描1、端口扫描-sT以TCP全连接扫描,--min-rate10000以最低10000速率进行扫描,-p-进行全端口扫描,-oports结果输出到ports文件......
  • OSPF笔记
    一、OSPFOpenShortestPathFirst开放式最短路径优先;属于链路状态路由协议OSPF被IP协议封装,工作在网络层之上的一种路由协议,协议号为89OSPF路由信息传递与路由计算分离,基于SPF算法,以累计链路开销作为选路参考值OSPF四张表:邻居表、链路状态数据库、OSPF路由表、全局路由表......
  • 嵌入式开发之C语言学习笔记day12
    动态内存分配1.常用函数2.malloc函数的细节点2.1malloc创建空间的单位是字节2.2malloc返回的是void类型的指针,没有步长的概念,也无法获取空间中的数据,需要强转2.3malloc返回的不仅仅是首地址,没有总大小,最好定义一个变量记录总大小2.4malloc申请的空间不会自动消失,如果......
  • Task01&Task02学习笔记
    Task01:安装Python编程环境Python解释器安装:进入官网下载搭建集成开发环境:下载pycharm:进入官网下载下载免费专业版教程可观看B站视频教程下面为视频链接(【全网最快速破解pycharm全程无废话!高效!】https://www.bilibili.com/video/BV1wJ4m1b7XZ/?share_source=copy_w......
  • 序列到序列的学习 (seq2seq - 词嵌入 - Embedding层 - mask掩码 - 后续会加入注意力机
    目录0.前言1.编码器 (encoder)补充1:词嵌入(WordEmbedding)补充2:嵌入层(EmbeddingLayer)2.解码器(decoder)3.损失函数4.训练5.预测6.预测序列的评估(BLEU)7.小结0.前言课程全部代码(pytorch版)已上传到附件本章节为原书第9章(现代循环网络),共分为8......