graphile_worker 0.13.3

High performance Rust/PostgreSQL job queue (also suitable for getting jobs generated by PostgreSQL triggers/functions out into a different work queue)
Documentation
# Installation

Graphile Worker RS is published as the `graphile_worker` crate. It needs a
PostgreSQL database and one supported async runtime in your application.

## Add the Crate

For the default setup, add the main crate:

```bash
cargo add graphile_worker
```

Or add it to `Cargo.toml` directly:

```toml
[dependencies]
graphile_worker = "0.13"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
```

The default feature set enables:

- `runtime-tokio`
- `tls-rustls`
- `driver-sqlx`

This is the recommended starting point for Tokio applications using SQLx and
rustls TLS.

## Tokio

Tokio is enabled by default, so most applications only need to add Tokio with
the runtime features they use:

```toml
[dependencies]
graphile_worker = "0.13"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
```

A typical Tokio entrypoint looks like this:

```rust,ignore
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    run_worker().await
}
```

## async-std

To use async-std, disable default features and enable `runtime-async-std`.
Because the default SQLx driver and rustls TLS are also disabled when default
features are disabled, enable them explicitly if you still want that setup:

```toml
[dependencies]
graphile_worker = { version = "0.13", default-features = false, features = [
  "runtime-async-std",
  "tls-rustls",
  "driver-sqlx",
] }
async-std = { version = "1", features = ["attributes"] }
```

Applications using the `#[async_std::main]` macro need async-std's
`attributes` feature:

```rust,ignore
#[async_std::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    run_worker().await
}
```

## Driver and TLS Features

The SQLx PostgreSQL driver is enabled by default through `driver-sqlx`. The
crate also exposes `driver-tokio-postgres` for Tokio applications.

```toml
[dependencies]
graphile_worker = { version = "0.13", default-features = false, features = [
  "runtime-tokio",
  "driver-tokio-postgres",
] }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
```

The `driver-tokio-postgres` feature enables `runtime-tokio` and is tested only
with the Tokio runtime. Use `driver-sqlx` for async-std.

TLS is selected separately from the database driver. The available TLS feature
flags are:

- `tls-rustls`
- `tls-native-tls`

When you disable default features, choose the runtime, database driver, and TLS
features you need explicitly.

## DATABASE_URL

Graphile Worker RS connects to PostgreSQL. Local tests and examples in this
repository use a standard PostgreSQL connection string through `DATABASE_URL`:

```bash
export DATABASE_URL='postgres://postgres:postgres@localhost:54233/postgres'
```

Use the same URL form for your own database, changing the username, password,
host, port, and database name as needed.

For a worker setup example that creates a SQLx pool and registers jobs, continue
to [Quick Start](quick-start.md). For a complete feature list, see
[Feature Flags](../reference/features.md).