#tokio #fast-cgi #web #async #protocols

tokio-fastcgi

为 Tokio 提供的 FastCGI 处理器(响应者、授权者、过滤器)库

4 个稳定版本

1.2.0 2024 年 2 月 6 日
1.1.1 2023 年 12 月 3 日
1.1.0 2022 年 8 月 7 日
1.0.0 2022 年 6 月 5 日

#1269Web 编程

每月下载量:47

Apache-2.0

52KB
663

Rust Current Version Docs.rs License Apache 2.0

异步 FastCGI 处理器库

此 crate 实现了 Tokio 的 FastCGI 处理器。它是对 FastCGI 协议在安全 Rust 中的完整重新实现,支持所有三个 FastCGI 角色:响应者、授权者和过滤器。枚举 Role 记录了不同的角色及其输入和输出参数。

如果您只想使用此库,请查看示例,打开文档,通过将以下内容添加到 [dependencies] 部分 Cargo.toml 开始使用。

tokio-fastcgi = "1"

工作原理

tokio-fastcgi 库处理由服务器发送的 FastCGI 请求。通过 Tokio 接受连接并创建新的任务来处理请求。在处理器任务中,通过调用 Requests::from_split_socket 创建异步请求流。通过在流上调用 Requests::next().await 将返回一个新 Request 实例,一旦它完全从 web 服务器接收。

返回的Request实例具有一个process方法,该方法接受一个异步回调函数或闭包,用于处理请求。当前的请求将作为参数传递给回调,并可用于检索由web服务器发送的输入流和写入输出流。如果处理请求失败,回调返回一个结果或错误。

Requests实例返回更多请求时,此过程会重复。如果没有更多请求返回,流将被丢弃,与web服务器的连接将被关闭。

此库处理连接重用和用户请求的取消。有关更多详细信息,请参阅Requests::next

示例

该库包含两个示例:一个简化的示例和一个小型的REST API。只需看一下 :)。

变更日志

  • 版本 1.0.0
    首次发布

  • 版本 1.1.0
    添加了枚举请求参数的方法(params_iterstr_params_iter)。

  • 版本 1.1.1
    更新依赖项版本。将依赖项对once_cell的限制放宽。

  • 版本 1.2.0
    修复错误 #4:在高负载下,FastCGI响应未能正确交付。这使得FastCGI协议失败,并且连接在各种错误消息下被丢弃。此版本修复了此问题。现在,即使在高负载下,tokio-fastcgi库也是稳定的。

依赖项

~2.5–4MB
~69K SLoC