Play Запланированные асинхронные задания не запускаются на Heroku - PullRequest
0 голосов
/ 18 ноября 2018

Приложение 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

(после чего платежи не осуществляются)

Это просто ограничение свободного уровня Героку? Или я могу что-то настроить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...