LabHub
学习 学习路径 课程

FastAPI — 타입이 곧 계약이다 · 계약과 수명 · 测验

FastAPI 확인

在 LabHub 中继续学习

8道题. 完成作答后会显示正确答案和解析。

  1. 如果在 `async def` 处理器中调用 `time.sleep(1)`,会怎样?

    1. 只有该请求延迟 1 秒
    2. FastAPI 会自动将它移到线程中
    3. 会抛出异常
    4. 整个服务器在 1 秒内无法处理其他请求
  2. 将相同代码声明为 `def`(同步)后,有什么不同?

    1. FastAPI 会将它发送到线程池
    2. 只是声明方式不同,行为相同
    3. 由于线程切换,速度会变慢
    4. 请求正文的类型检查会关闭
  3. 收到不符合架构的正文时,FastAPI 返回什么状态码?

    1. 400 Bad Request
    2. 500 Internal Server Error
    3. 422 Unprocessable Entity
    4. 409 Conflict
  4. `response_model` 最实用的效果是什么?

    1. 跳过序列化,使响应更快
    2. 响应中会移除未定义的字段
    3. 使用同一个模型验证请求正文
    4. 自动缓存响应
  5. 使用 `Depends` 创建的依赖项在测试中有什么优势?

    1. 无需修改生产代码即可替换
    2. 测试执行得更快
    3. 会自动生成模拟对象(mock)
    4. 处理器的类型提示会变得宽松
  6. 关于 `BackgroundTasks`,哪项描述正确?

    1. 它是类似 Celery 的分布式任务队列
    2. 它在发送响应后于同一进程中执行
    3. 它在独立的工作容器中执行
    4. 失败后会自动重试
  7. 使用 `uvicorn --workers 4` 启动时,需要注意什么?

    1. CPU 使用量始终变为四倍
    2. 必须开放 4 个端口
    3. async 处理器会变成同步
    4. 因为有 4 个进程,所以它们不共享全局变量
  8. 现在推荐用什么方式在启动时打开连接池?

    1. @app.on_event("startup")
    2. 直接在模块顶层打开
    3. lifespan 上下文管理器
    4. 在中间件处理第一个请求时打开