发布于 2026-01-06 0 阅读
0

Bocadillo:又一个 Python 框架 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

Bocadillo:又一个 Python 框架

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

大家好。在这篇文章中,我将介绍Bocadillo框架。如大家所知,Python中有很多Web框架。

过去几天,我一直在寻找能够提升自己的新技术。我在GitHub上发现了Bocadillo。

什么是博卡迪略?

Bocadillo 是一个现代化的 Python Web 框架,充满了异步 Salsa 元素。

您可以通过以下链接访问 Bocadillo 的网站:https://bocadilloproject.github.io/

您可以在 GitHub 上找到 Bocadillo:https://github.com/bocadilloproject/bocadillo

其主要特点是:

  • 高效的
  • 具备实时能力
  • 灵活的
  • 表演者
  • 赋能
  • 透明的

透明:所有代码均使用类型注解编写。

你还可以开发 WebSocket 应用。实际上,我认为它最大的卖点就是 WebSocket。

安装

Bocadillo 有一个用于创建项目的命令行工具。但是您无需安装该命令行工具。

CLI 安装

pip install bocadillo-cli
Enter fullscreen mode Exit fullscreen mode

框架安装

pip install bocadillo
Enter fullscreen mode Exit fullscreen mode

使用 virtualenv

mkdir my_first_app

cd my_first_app

virtualenv .

source bin/activate

pip install bocadillo
Enter fullscreen mode Exit fullscreen mode

现在,我们安装了博卡迪略。

第一个 Bocadillo 应用

你可以使用你喜欢的编辑器或集成开发环境(IDE)。我会创建一个名为 app.py 的文件。

touch app.py
Enter fullscreen mode Exit fullscreen mode

我会用nano编辑器编辑 app.py 文件。没错,这就是嬉皮士风格 :)

# app.py file
from bocadillo import App

app = App()

@app.route("/")
async def index(req, res):
  res.text = "Hello Dev Family"
Enter fullscreen mode Exit fullscreen mode

就这些了。Bocadillo 与 Flask 框架非常相似。要运行我们的第一个应用程序,我们将使用uvicorn

别担心,它会自动弹出Bocadillo。你不需要再次安装。

uvicorn app:app --reload

我们将使用上述命令运行我们的第一个应用程序。执行此命令后,您将看到如下所示的输出;

INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [24076]
INFO: Started server process [24078]
INFO: Waiting for application startup.
INFO: ASGI 'lifespan' protocol appears unsupported.
Enter fullscreen mode Exit fullscreen mode

这意味着我们的 Web 应用运行在 8000 端口。干得好,我们创建了第一个应用。接下来,让我们修改应用,使用后台任务。

from asyncio import sleep
from bocadillo import App

app = App()

@app.route("/")
async def index(req, res):

  try:
    if req.query_params["wait"] == "true":
      @res.background
      async def waitForTest():
        await sleep(15)
        print("I'll work :)")
  except:
    print(":/")

  res.text = "Hello Dev family"
Enter fullscreen mode Exit fullscreen mode

后台任务是一种轻量级机制,用于在请求发送后执行处理操作,而无需客户端等待结果。典型的例子包括发送电子邮件或将日志发送到远程系统。

当后台任务注册到响应中时,它不会立即运行。相反,视图会像往常一样终止,并发送响应。只有在响应发送完毕后,后台任务才会执行。

这样可以防止客户端在收到响应之前等待后台任务完成

如果尝试不使用后台任务,则需要等待 sleep 方法执行完毕。首先,您应该尝试上面的代码。

1)打开两个接线端子。

在第一个终端中运行此命令。

curl http://127.0.0.1:8000/?wait=true

立即在第二个终端中运行此命令。

curl http://127.0.0.1:8000/

所有终端都会输出“Hello Dev family”。你还需要查看运行第一个应用程序的原始终端。

15 秒后,您将看到“我会工作”的输出。

如果你不使用异步后台任务,就需要等待 sleep 方法完成。

import time
from bocadillo import App

app = App()

@app.route("/")
async def index(req, res):

  try:
    if req.query_params["wait"] == "true":
      time.sleep(15)
      print("I'll work :)")
  except:
    print(":/")

  res.text = "Hello Dev family"
Enter fullscreen mode Exit fullscreen mode

请记住,后台任务必须是非阻塞的。因为后台任务是一个协程,所以它必须是非阻塞的,以避免阻塞主线程并阻止请求被处理。

今天就到这里。

其他功能请参阅博卡迪略指南。博卡迪略是我介绍的。

指南https://bocadilloproject.github.io/guide/

感谢阅读。

文章来源:https://dev.to/itachiuchiha/bocadillo-yet-another-python-framework-57ii