async-fcgi

Crates.ioasync-fcgi
lib.rsasync-fcgi
version0.5.0
sourcesrc
created_at2020-06-20 11:20:45.892095
updated_at2024-03-03 11:52:39.605732
descriptionFastCGI library
homepage
repositoryhttps://github.com/User65k/async-fcgi
max_upload_size
id255952
size166,569
(User65k)

documentation

README

Project Status: Active – The project has reached a stable, usable state and is being actively developed. crates.io Released API docs GitHub GitHub Workflow Status

FastCGI implementation in pure Rust.

The focus is on the webserver/client side, but the application/server side could be added in the future.

Developed for FlashRust Webserver with focus on

  • Vectorized IO and Zero Copy
  • async IO / tokio
  • easy HTTP interfaces

Tested with:

  • Flup (Python)
  • PHP

cargo run --example webserver --features="con_pool"

Features

  • Handle UnixStream and TCPStream transparently
  • reconnect to the FCGI App if a connection is closed
  • Start an FCGI server (exec + env)
  • Support Key-Value Pairs bigger than maximum record size
  • "Full Duplex" connection to the FCGI Server/App (e.g stream STDIN and OUT at the same time)
  • con_pool should handle more than one connection :sweat_smile: and load balance
  • A dropped FCGIBody should not block a RequestID and cancel the request
  • Connection should handle overload error from FCGI app
  • Parsing for FCGI application/server side

PullRequests are welcome BTW

Other FCGI Crates

Crate Description Difference to this
fastcgi-client Async (tokio) client Different API
fastcgi Synchronous Server Synchronous. Only Server/App Side
fastcgi-sdk Bindings to the FastCGI SDK Bindings
gfcgi abandoned Only Server/App Side
fcgi Bindings yanked
Commit count: 43

cargo fmt