为啥我的 sidekiq 计划的 cron 作业没有在 heroku 上运行?

Posted

技术标签:

【中文标题】为啥我的 sidekiq 计划的 cron 作业没有在 heroku 上运行?【英文标题】:Why are my sidekiq scheduled cron jobs not running on heroku?为什么我的 sidekiq 计划的 cron 作业没有在 heroku 上运行? 【发布时间】:2021-09-12 11:31:10 【问题描述】:

我为我在 Rails 中编码的应用程序编写了几个预定的作业。这些工作会废弃网球比赛和结果的数据。它们在我的计算机上安排时运行完美。当我每分钟设置一个 cron 表达式时,它们也会在 heroku 上运行 '* * * * *'。

但是当我尝试为每四个小时设置一个表达式时,它会停止运行,但 heroku 工作人员已启动并且不会崩溃,所以我真的不明白发生了什么。 我尝试了几种方法来编写我的 cron 表达式。

这是我在 sidekiq.yml 中尝试的最后一个:

:schedule:
  set_scrapp_state_job:
    cron: '1 1,13 * * *'
    class: SetScrappStateJob
  set_scrapp_drawed_job:
    cron: '1 2,14 * * *'
    class: SetScrappDrawedJob
  fill_participants_and_create_first_round_games_job:
    cron: '1 3,15 * * *'
    class: FillParticipantsAndCreateFirstRoundGamesJob
  reset_participants_while_qualified_and_luckyloser_in_draw_job:
    cron: '1 4,16 * * *'
    class: ResetParticipantsWhileQualifiedAndLuckyloserInDrawJob
  fill_wins_with_bye_job:
    cron: '1 5,17 * * *'
    class: FillWinsWithByeJob
  fill_games_results_for_current_tournaments_job:
    cron: '1 0,2,4,6,8,10,12,14,16,18,20,22 * * *'
    class: FillGamesResultsForCurrentTournamentsJob

【问题讨论】:

【参考方案1】:

这实际上是我在 Heroku 上使用的计划的问题。免费计划让恐龙在 30 分钟后睡觉,即使他们有后台工作要做,我认为这只是网络 dynos 的情况。所以我改变了最便宜的计划,现在它可以工作了,因为测功机不再空闲:)

【讨论】:

以上是关于为啥我的 sidekiq 计划的 cron 作业没有在 heroku 上运行?的主要内容,如果未能解决你的问题,请参考以下文章

PHP:运行计划作业(cron 作业)

为啥我的用于 Firebase 的 Cron 计划云功能在太平洋时间而不是 UTC 时间运行?

Cron 作业计划时间自动更改

如何在AWS Windows实例中运行Cron作业(事件计划)

GitHub Actions - 计划的 cron 作业的通知

Sidekiq - 查看已完成的作业