How to schedule tasks in Ktor microservice app

I am trying to schedule a task in my Ktor application, however I have not been able to find anything online about how to do this. Does anyone have any recommendations or been able to do this before?


  • Ktor doesn't have a built-in scheduler, so you'd have to implement your own.

    I've written a small class using Java's Executors for this task for myself, you might find it useful:

    class Scheduler(private val task: Runnable) {
        private val executor = Executors.newScheduledThreadPool(1)!!
        fun scheduleExecution(every: Every) {
            val taskWrapper = Runnable {
            executor.scheduleWithFixedDelay(taskWrapper, every.n, every.n, every.unit)
        fun stop() {
            try {
                executor.awaitTermination(1, TimeUnit.HOURS)
            } catch (e: InterruptedException) {
    data class Every(val n: Long, val unit: TimeUnit)