yesod-worker-0.0.1: Drop-in(ish) background worker system for Yesod apps

Safe HaskellNone
LanguageHaskell2010

Yesod.Worker

Synopsis

Documentation

defaultRunW :: (PersistConfig c, MonadWorker m, MonadBaseControl IO m) => (WorkerSite m -> c) -> (WorkerSite m -> PersistConfigPool c) -> PersistConfigBackend c m b -> m b Source

Provides the default runW implementation for running SQL queries inside a Worker

enqueue :: YesodWorker site => Job -> HandlerT site IO () Source

Add a job to the site queue from within a Handler

emptyQueue :: IO (JobQueue a) Source

An empty queue, suitable for initializing the app queue at boot

getYesodW :: MonadWorker m => m (WorkerSite m) Source

Get the master site application argument.

type JobQueue a = TVar (Seq a) Source

spawnWorkers :: YesodWorker site => site -> IO () Source

Spawns a number of workers which will consume from the application queue performing jobs as they are popped.

data WorkerT site m a Source

Instances

MonadBaseControl b m => MonadBaseControl b (WorkerT site m) 
MonadBase b m => MonadBase b (WorkerT site m) 
MonadTrans (WorkerT site) 
Monad m => Monad (WorkerT site m) 
Monad m => Functor (WorkerT site m) 
Monad m => Applicative (WorkerT site m) 
MonadThrow m => MonadThrow (WorkerT site m) 
MonadIO m => MonadLogger (WorkerT site m) 
MonadIO m => MonadIO (WorkerT site m) 
(MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (WorkerT site m) 
data StM (WorkerT site m) = StH (StM m a) 

class Yesod site => YesodWorker site where Source

Typeclass for customizing Worker settings

Minimal complete definition

queue, perform, runW

Associated Types

type Job Source

Your applications job type

Methods

queue :: site -> JobQueue Job Source

How to retreive the application queue

workerCount :: site -> Int Source

Number of concurrent workers

perform :: Job -> WorkerT site IO () Source

How to execute each job

runW :: SqlPersistT (WorkerT site IO) a -> WorkerT site IO a Source

Helper for running SQL queries inside a Worker