faucet-server 2.1.0

Welcome to Faucet, your go-to solution for deploying Plumber APIs and Shiny Applications with blazing speed and efficiency. Faucet is a high-performance server built with Rust, offering Round Robin and Round Robin + IP Hash load balancing for seamless scaling and distribution of your R applications. Whether you're a data scientist, developer, or DevOps enthusiast, Faucet streamlines the deployment process, making it easier than ever to manage replicas and balance loads effectively.
Documentation
# Frequently Asked Questions

### faucet is not load balancing my Shiny App on Google Cloud Run.

Google Cloud Run has a proxy between the requests sent and the actual
underlying services. Therefore we need to tell faucet who is connecting
and how to read the end-user's IP address.

We can fix this by setting the `FAUCET_IP_FROM` environment variable or
`--ip-from` CLI argument to `x-forwarded-for`.

### I'm getting "address already in use" errors with my workers.

If you see errors like `createTcpServer: address already in use` or `Failed to create server`, this typically means that your application code has hardcoded port settings that conflict with faucet's port management.

Faucet automatically assigns unique ports to each worker, but your application code might be overriding these with explicit port declarations.

**Common causes and solutions:**

- **Shiny apps:** Check for `options(shiny.port = ...)` calls in your code and remove them. Also avoid hardcoded ports in `shiny::runApp(port = ...)` calls.
- **Plumber APIs:** Remove explicit port settings in `plumber::pr_run(port = ...)` calls.
- **Other services:** Ensure no hardcoded ports are set in configuration files or startup scripts.

Let faucet manage the port assignments automatically for proper load balancing to work.