WARNING: This page is a guide for 1.x series. See here instead to learn about the latest

Worker Jobs

How to use SkinnyWorkerService

Skinny’s WorkerService is a simple wrapper of Java built-in ExecutorService and prepared in Skinny apps by default.

You can access it as skinnyWorkerService in ScalatraBootstrap.scala and just call scheduling methods.

import skinny._
import skinny.worker._
import skinny.controller._
import _root_.controller._

class ScalatraBootstrap extends SkinnyLifeCycle {

  override def initSkinnyApp(ctx: ServletContext) { 

    val worker = new SkinnyWorker {
      def execute = {
        println("Hello World!")

    // will be invoked every 300 milliseconds
    skinnyWorkerService.everyFixedMilliseconds(worker, 300)
    // will be invoked every 10 seconds
    skinnyWorkerService.everyFixedSeconds(worker, 10)
    // will be invoked every 4 minutes
    skinnyWorkerService.everyFixedMinutes(worker, 4)
    // will be invoked at 01:30, 02:30, ....
    skinnyWorkerService.hourly(worker, 30)
    // will be invoked at 09:20 AM everyday
    skinnyWorkerService.daily(worker, 9, 20)

    // Routes



SkinnyWorker’s rule is very simple. SkinnyWorker object is a java.lang.Runnable one.

And developers just implement the abstract def execute(): Unit method.

import skinny.worker._
import model._

class SampleWorker extends SkinnyWorker {

  override def execute = {
    // If an exception is thrown from this method, 

  override def handle(t: Throwable) = {
    // handles exceptions from execute method

If you find a typo or mistake in this page, please report or fix it. How?