Приложение My Play v2.6 использует запланированные задания . Они работают при локальном запуске, но никогда не запускаются при развертывании в Heroku.
Есть предыдущие вопросы, связанные с этим, но ни на один из них нет соответствующего ответа.
Журнал при настройке задачи печатается, но сообщения журнала при выполнении задачи не отображаются. Кроме того, эффект от выполняемой задачи никогда не происходит.
Расписание на 1 секунду в будущем, так что у Heroku нет шансов заснуть в приложении.
Источник:
@Singleton
class PaymentProcessor @Inject()(repo: PaymentRepo,
config: Configuration,
system: ActorSystem) {
private val actor = system.actorOf(Props(new ActorDef()))
private implicit val ec: ExecutionContextExecutor = system.dispatcher
def checkForPayments(reason: String, after: FiniteDuration = 1.second): Unit = {
Logger.debug(s"Checking again for due payments after $after")
system.scheduler.scheduleOnce(after, actor, CheckForPayments(reason))
}
class ActorDef() extends Actor {
override def receive: Receive = {
case CheckForPayments(reason) =>
Logger.debug(s"Checking for due payments ($reason)")
// followed by logic to find and transact due payments
}
}
Вот источник без сокращений .
Вывод локально:
[debug] application - Checking again for due payments after 1 second
[debug] application - Checking for due payments (CSV uploaded)
(после чего должны быть произведены платежи)
Выход на Heroku:
2018-11-18T11:48:01.247773+00:00 app[web.1]: [debug] application - Checking again for due payments after 1 second
(после чего платежи не осуществляются)
Это просто ограничение свободного уровня Героку? Или я могу что-то настроить?