| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Arbiter.Servant.Server
Contents
Description
REST API server for the Arbiter job queue, over any MonadArbiter backend.
Security: No built-in authentication. All endpoints are publicly accessible. Add auth middleware before exposing to untrusted networks.
Synopsis
- arbiterServer :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type). (BuildServer registry registry, HasRegistry m registry) => ArbiterServerConfig m registry -> ServerT (ArbiterAPI registry) Handler
- arbiterServerHoisted :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type) n. (BuildServer registry registry, HasRegistry m registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => (forall x. Handler x -> n x) -> ArbiterServerConfig m registry -> ServerT (ArbiterAPI registry) n
- arbiterApp :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type). (BuildServer registry registry, HasRegistry m registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => ArbiterServerConfig m registry -> Application
- runArbiterAPI :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type). (BuildServer registry registry, HasRegistry m registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => Port -> ArbiterServerConfig m registry -> IO ()
- data ArbiterServerConfig (m :: Type -> Type) (registry :: JobPayloadRegistry) = ArbiterServerConfig {
- serverRun :: forall a. m a -> IO a
- serverSchema :: Text
- enableSSE :: Bool
- rateLimitPoliciesCache :: CacheCell RateLimitPoliciesResponse
- concurrencyPoliciesCache :: CacheCell ConcurrencyPoliciesResponse
- allQueueStatsCache :: CacheCell AllStatsResponse
- queueStatsCache :: CacheCell StatsResponse
- statsCacheTtl :: NominalDiffTime
- healthCache :: CacheCell HealthResponse
- maintenanceInterval :: NominalDiffTime
- maintenanceSparseInterval :: NominalDiffTime
- maintenanceBucketIdle :: NominalDiffTime
- maintenanceTimeout :: NominalDiffTime
- serverLogConfig :: LogConfig
- deadLetterGates :: FailureGates
- createArbiterServer :: forall m (registry :: JobPayloadRegistry). HasRegistry m registry => (forall a. m a -> IO a) -> IO (ArbiterServerConfig m registry)
- defaultStatsCacheTtl :: NominalDiffTime
- defaultMaintenanceInterval :: NominalDiffTime
- defaultMaintenanceBucketIdle :: NominalDiffTime
- defaultMaintenanceSparseInterval :: NominalDiffTime
- defaultMaintenanceTimeout :: NominalDiffTime
- class BuildServer (registry :: JobPayloadRegistry) (reg :: JobPayloadRegistry) where
- buildServer :: forall (m :: Type -> Type). HasRegistry m registry => ArbiterServerConfig m registry -> ServerT (RegistryToAPI reg) Handler
- data CacheCell a
Server
arbiterServer :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type). (BuildServer registry registry, HasRegistry m registry) => ArbiterServerConfig m registry -> ServerT (ArbiterAPI registry) HandlerSource #
Complete Arbiter server at /api/....
arbiterServerHoisted :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type) n. (BuildServer registry registry, HasRegistry m registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => (forall x. Handler x -> n x) -> ArbiterServerConfig m registry -> ServerT (ArbiterAPI registry) nSource #
Hoisted server for integration into a route tree using a custom monad.
arbiterApp :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type). (BuildServer registry registry, HasRegistry m registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => ArbiterServerConfig m registry -> ApplicationSource #
Convert to WAI Application.
runArbiterAPI :: forall (registry :: JobPayloadRegistry) (m :: Type -> Type). (BuildServer registry registry, HasRegistry m registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => Port -> ArbiterServerConfig m registry -> IO ()Source #
Run the API server on a port. Prints a start line to stdout.
data ArbiterServerConfig (m :: Type -> Type) (registry :: JobPayloadRegistry)Source #
Configuration for the API server. m is the backend monad every handler's
statements run in. createArbiterServer fills the cache fields.
Constructors
| ArbiterServerConfig | |
Fields
| |
createArbiterServer :: forall m (registry :: JobPayloadRegistry). HasRegistry m registry => (forall a. m a -> IO a) -> IO (ArbiterServerConfig m registry)Source #
Create an ArbiterServerConfig over a backend runner. SSE needs the
enableEventStreaming migration option and a backend with a listener.
defaultStatsCacheTtl :: NominalDiffTimeSource #
Stats are read live by default.
defaultMaintenanceInterval :: NominalDiffTimeSource #
No minimum gap. Each call runs every ordinary operation. Concurrent callers exclude each other on the gate.
defaultMaintenanceBucketIdle :: NominalDiffTime#
Age after which an idle rate-limit bucket is pruned.
defaultMaintenanceSparseInterval :: NominalDiffTime#
Gap the bucket prune and the concurrency reconcile-and-prune keep.
defaultMaintenanceTimeout :: NominalDiffTime#
Statement timeout for one maintenance operation.
class BuildServer (registry :: JobPayloadRegistry) (reg :: JobPayloadRegistry) whereSource #
Builds a registry's per-queue server implementations. registry is the whole
registry. reg is the part still to build. Each result type needs FromJSON and an
EncodeJobResult instance. Each payload type needs JobPayload.
Methods
buildServer :: forall (m :: Type -> Type). HasRegistry m registry => ArbiterServerConfig m registry -> ServerT (RegistryToAPI reg) HandlerSource #
The server for the queues in reg, then the shared routes.
Instances
| (RegistryAdmissionPolicies registry, RegistryTables registry) => BuildServer registry ('[] :: [QueueSpec]) Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: forall (m :: Type -> Type). HasRegistry m registry => ArbiterServerConfig m registry -> ServerT (RegistryToAPI ('[] :: [QueueSpec])) HandlerSource # | |
| (BuildServer registry rest, EncodeJobResult (SpecResult spec), JobPayload (SpecPayload spec), KnownSymbol (SpecName spec)) => BuildServer registry (spec ': rest) Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: forall (m :: Type -> Type). HasRegistry m registry => ArbiterServerConfig m registry -> ServerT (RegistryToAPI (spec ': rest)) HandlerSource # | |
Keyed TTL cache. createArbiterServer creates each cell.