---
name: "FCGI::Async::PSGI"
section: "3pm"
platform: "linux"
package: "libfcgi-async-perl"
version: "0.22-1.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/FCGI::Async::PSGI"
---

# FCGI::Async::PSGI(3pm)

use "PSGI" applications with "FCGI::Async"

## NAME

"FCGI::Async::PSGI" - use "PSGI" applications with "FCGI::Async"

## SYNOPSIS

```
 use FCGI::Async::PSGI;
 use IO::Async::Loop;
 my $loop = IO::Async::Loop->new;
 my $fcgi = FCGI::Async::PSGI->new(
    port => 12345,
    app => sub {
       my $env = shift;
       return [
          200,
          [ "Content-Type" => "text/plain" ],
          [ "Hello, world!" ],
       ];
    },
 );
 $loop->add( $fcgi );
 $loop->loop_forever;
```

## DESCRIPTION

This subclass of FCGI::Async allows a FastCGI responder to use a PSGI application to respond to requests. It acts as a gateway between the FastCGI connection from the webserver, and the `"PSGI"` application. Aside from the use of `"PSGI"` instead of the `"on_request"` callback, this class behaves similarly to `"FCGI::Async"`.

## PARAMETERS

The following named parameters may be passed to `"new"` or `"configure"`:

- app =\> CODE

  Reference to the actual `"PSGI"` application to use for responding to requests

## PSGI ENVIRONMENT

The following extra keys are supplied to the environment of the `"PSGI"` app:

- "fcgi.async"

  The `"FCGI::Async::PSGI"` object serving the request

- "fcgi.async.req"

  The FCGI::Async::Request object representing this particular request

- "io.async.loop"

  The IO::Async::Loop object that the `"FCGI::Async::PSGI"` object is a member of. This is also provided as `"fcgi.async.loop"` for backward-compatibility with version 0.21, but at some point will be removed.

## SEE ALSO

- •

  PSGI - Perl Web Server Gateway Interface Specification

- •

  Plack::Handler::FCGI::Async - FastCGI handler for Plack using FCGI::Async

## AUTHOR

Paul Evans \<leonerd@leonerd.org.uk\>
