Как запустить Cron Jobs в Kotlin Ktor?

Есть ли способ запускать задания Cron с помощью Ktor? Моя конечная цель - разместить задание Cron, написанное с помощью Kotlin, для приложения Coinverse. серверная служба для заполнения данных.

В настоящее время я размещаю несколько приложений Java .jar, написанных на Kotlin, на AppEngine. Я хочу преобразовать эти приложения в приложения Ktor в AppEngine с помощью Cron Job для запланированных задач, поскольку у приложений .jar больше проблем с зависимостями.

Я ищу аналог Ktor для Cloud Functions. -в реализации Cron Jobs с JavaScript.

functions.pubsub.schedule

Вариант резервного копирования. Если у Ktor нет этой функции, а я хочу сохранить код в Kotlin, у Google есть альфа-версия, Использование Kotlin с функциями Google Cloud. Похоже, что с этим подходом можно использовать встроенную реализацию Kotlin + Cloud Functions.


person Adam Hurwitz    schedule 29.12.2019    source источник


Ответы (2)


Сергей Машков из команды JetBrains предлагает в группе Slack kotlinlang запустить Kotlin Coroutine на Application прицеле с помощью бесконечный цикл и delay.

Тогда приложение Ktor может быть развернут в AppEngine.

fun Application.main() {
    launch {
        while(true) {
            delay(600000)
            // Populate data here.
        }
    }
}
person Adam Hurwitz    schedule 31.12.2019

Что касается моего опыта, это не сработает, приложение остановится через 20 минут или около того. Единственное решение, которое я нашел, - это создать обычное приложение cron.yaml и ktor, и оно работает без жалоб .... (приложение ktor должно реализовывать get и будет вызываться файлом cron)

person marc    schedule 24.09.2020
comment
Интересный подход, спасибо! Похоже, что приложение ktor будет постоянно работать с этим подходом, который может быть дороже, чем требуется. - person Adam Hurwitz; 28.12.2020