FastAPI 教程

1.6 运行服务器:Uvicorn 和 ASGI 简介

FastAPI教程:Uvicorn和ASGI服务器入门指南

FastAPI 教程

本教程面向新手,详细介绍如何使用Uvicorn和ASGI运行FastAPI服务器,包括安装步骤和简单示例,助你轻松上手Python异步Web开发。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

运行服务器:Uvicorn 和 ASGI 简介

欢迎来到FastAPI学习教程!在这一节中,我们将介绍如何运行你的FastAPI应用,重点关注UvicornASGI。无论你是刚入门Python Web开发,这些内容都将简单易懂。

什么是ASGI?

ASGI(Asynchronous Server Gateway Interface,异步服务器网关接口)是一个Python标准,用于构建异步Web应用程序。相比传统的WSGI(Web Server Gateway Interface),ASGI支持异步操作,这意味着它可以高效处理并发请求,适合现代Web应用如FastAPI。

  • 为什么FastAPI使用ASGI? FastAPI基于异步编程,利用ASGI可以获得更好的性能和可扩展性。
  • 简单理解:ASGI就像是Web服务器和你的应用之间的桥梁,但它可以处理多个任务同时进行,不阻塞。

什么是Uvicorn?

Uvicorn是一个轻量级、高性能的ASGI服务器,专门用于运行ASGI应用。它是FastAPI的默认推荐服务器,因为它支持异步特性,并易于使用。

  • 优点:速度快、内存占用小、支持热重载(用于开发)。
  • 常见用途:运行FastAPI、Starlette等ASGI框架的应用。

安装Uvicorn

在运行FastAPI应用之前,你需要安装Uvicorn。使用pip命令即可安装:

pip install uvicorn[standard]
  • [standard]选项会安装一些额外的依赖,如WebSocket支持,推荐使用以获取完整功能。

运行FastAPI应用

假设你有一个FastAPI应用,保存在一个名为main.py的文件中,其中有一个应用实例app。下面是运行步骤:

  1. 创建FastAPI应用示例(如果你还没有):

    # main.py
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def read_root():
        return {"message": "Hello, FastAPI!"}
    
  2. 使用Uvicorn运行服务器: 在命令行中,切换到你的项目目录,然后运行:

    uvicorn main:app --reload
    
    • main:app:指定应用所在的模块(main.py)和应用实例(app)。
    • --reload:这是一个开发选项,当代码变化时自动重启服务器,方便调试。
  3. 检查运行结果: 服务器启动后,通常会显示类似这样的信息:

    INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    

    打开浏览器访问http://127.0.0.1:8000,你应该看到{"message": "Hello, FastAPI!"}

进阶配置

  • 更改端口和主机

    uvicorn main:app --host 0.0.0.0 --port 8080
    
    • --host 0.0.0.0:允许外部访问。
    • --port 8080:指定端口为8080。
  • 生产环境建议:在生产中,通常不使用--reload,而是结合反向代理(如Nginx)和进程管理器(如Gunicorn)来运行Uvicorn。

总结

通过本教程,你学会了使用Uvicorn和ASGI来运行FastAPI服务器。记住:

  • ASGI是异步服务器接口,FastAPI基于它构建。
  • Uvicorn是一个优秀的ASGI服务器,易于安装和运行。
  • 使用uvicorn main:app --reload快速启动开发服务器。

现在你可以继续探索FastAPI的其他功能了!如果你遇到问题,请参考官方文档或在社区寻求帮助。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包