pub struct HandlersConfig {
pub bindings: BindingsConfig,
pub pooling: bool,
pub sync_max_timeout_ms: Option<u64>,
pub async_max_timeout_ms: Option<u64>,
pub async_max_concurrency: Option<usize>,
pub async_max_fuel: Option<u64>,
pub outbound_timeout_ms: Option<u64>,
}Expand description
handlers section — server-side handler runtime config (read by serve).
Parsed in every build (so config files stay portable), but only consumed
when the handlers feature is compiled in.
Fields§
§bindings: BindingsConfighandlers.bindings — which backend serves each handler binding.
pooling: boolUse the wasmtime pooling instance allocator: faster instantiation at the cost of a large up-front virtual-memory reservation. Off by default — opt in and benchmark for your workload.
sync_max_timeout_ms: Option<u64>Engine-wide safety max on a connection-bearing invocation (a site
handler or a synchronous function/webhook invoke), milliseconds. A route
or function may declare a lower timeout, never a higher one. Kept tight
on purpose: a client, proxy, and the shared request pool are all blocked
while a sync handler runs. Absent ⇒ 10s (the historical default). This is
a node safety ceiling, not a per-invocation budget, and is distinct from
a per-site max_timeout_ms.
async_max_timeout_ms: Option<u64>Engine-wide safety max on a durable async invocation — the drain that
runs ?mode=async calls, workflow steps, cron/queue/blob triggers, and
wasi:messaging consumers, milliseconds. No client is connected and the
work is retried + dead-lettered, so this can be far larger than the sync
ceiling: it is what lets a legitimately long background job (e.g. an LLM
generation) declare and actually get minutes of runtime. Absent ⇒ 15
minutes. Runs on its own concurrency budget (async_max_concurrency), so
a long job never starves live traffic.
async_max_concurrency: Option<usize>Max concurrent in-flight async-lane invocations, kept separate from the (larger) request pool so a burst of long background jobs can’t exhaust the slots live site traffic needs. Absent ⇒ 8.
async_max_fuel: Option<u64>Optional CPU fuel ceiling for an async-lane invocation. A large async timeout bounds only wall-clock; without a fuel bound a CPU-bound guest can spin for the whole window. Absent ⇒ unmetered (same as the sync default).
outbound_timeout_ms: Option<u64>Optional ceiling on a guest’s outbound wasi:http call — the connect
and time-to-first-byte wait — milliseconds, independent of the invocation
timeout, so a hung upstream is bounded on its own terms. The streaming
(between-bytes) timeout is left at wasmtime’s default so a slow token
stream is not cut mid-flight. Absent ⇒ wasmtime’s default.
Trait Implementations§
Source§impl Clone for HandlersConfig
impl Clone for HandlersConfig
Source§fn clone(&self) -> HandlersConfig
fn clone(&self) -> HandlersConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HandlersConfig
impl Debug for HandlersConfig
Source§impl Default for HandlersConfig
impl Default for HandlersConfig
Source§fn default() -> HandlersConfig
fn default() -> HandlersConfig
Source§impl<'de> Deserialize<'de> for HandlersConfigwhere
HandlersConfig: Default,
impl<'de> Deserialize<'de> for HandlersConfigwhere
HandlersConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for HandlersConfig
impl RefUnwindSafe for HandlersConfig
impl Send for HandlersConfig
impl Sync for HandlersConfig
impl Unpin for HandlersConfig
impl UnsafeUnpin for HandlersConfig
impl UnwindSafe for HandlersConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more