Задача планировщика Heroku не выполняется должным образом - PullRequest
0 голосов
/ 06 июня 2018

Я использую надстройку Heroku Scheduler для запуска заданий в моем приложении через запланированные промежутки времени, во многом как cron в традиционной серверной среде.Задачи довольно тривиальны, потому что они просто ставят в очередь работника sidekiq.Однако, как вы можете видеть на фотографии ниже, :update_job_posts по какой-то причине не работает при 4:30.

Не могу ли я объединить эти два задания таким образом, или они должны запускать отдельно ?

Если я запускаю задачу с heroku run, она проходит.heroku run используется для выполнения ваших заданий, поэтому вы можете быть уверены, что если он работает с Heroku Run, он будет работать из планировщика.

$ heroku run rake scheduler:update_job_posts
Running rake scheduler:update_job_posts on ⬢ agile-temple-76502... up, run.6604 (Free)
Updating Job feed...
I, [2018-06-06T04:40:50.341411 #4]  INFO -- : [ActiveJob] Enqueued JobFeedImportJob (Job ID: e3b9a0ed-aacb-45af-84f9-ef02acfeb85e) to Sidekiq(default)
I, [2018-06-06T04:40:50.344400 #4]  INFO -- : [ActiveJob] Enqueued RemoteFeedImportJob (Job ID: b965853d-adb3-46ee-b48d-f19306ce9d2a) to Sidekiq(default)
done.

Кроме того, heroku logs --tail показывает другие выполняющиеся задачи:

heroku[scheduler.5009]: Starting process with command `bundle exec rake scheduler:update_news_articles`
heroku[scheduler.5009]: State changed from starting to up
app[scheduler.5009]: Updating News feed...
app[scheduler.5009]: I, [2018-06-06T04:31:05.636594 #4]  INFO -- : [ActiveJob] Enqueued NewsFeedImportJob (Job ID: d672b0c5-598b-4eb7-81b6-1a0d2d8a5891) to Sidekiq(default)
app[scheduler.5009]: done.
app[worker.1]: 4 TID-tfdlg NewsFeedImportJob JID-d999a576b3193a404b3d8fdd INFO: start
app[worker.1]: I, [2018-06-06T04:31:05.636769 #4]  INFO -- : [ActiveJob] [NewsFeedImportJob] [d672b0c5-598b-4eb7-81b6-1a0d2d8a5891] Performing NewsFeedImportJob from Sidekiq(default)
heroku[scheduler.5009]: Process exited with status 0
heroku[scheduler.5009]: State changed from up to complete

scheduler.rake

namespace :scheduler do
  desc "Enqueue sidekiq job, fetches events, and creates a record for new entries"
  task :update_event_feed => :environment do
    puts "Updating Event feed..."
    EventFeedImportJob.perform_later
    puts "done."
  end

  desc "Enqueue sidekiq job, fetches job posts, and creates a record for new entries"
  task :update_job_posts => :environment do
    puts "Updating Job feed..."
    JobFeedImportJob.perform_later
    RemoteFeedImportJob.perform_later
    puts "done."
  end

  desc "Enqueue sidekiq job, fetches news articles, and creates a record for new entries"
  task :update_news_articles => :environment do
    puts "Updating News feed..."
    NewsFeedImportJob.perform_later
    puts "done."
  end
end

Heroku Scheduler

1 Ответ

0 голосов
/ 06 июня 2018

Known issues and alternatives

Планировщик Heroku говорит о документации

Планировщик является бесплатным дополнением без гарантии того, чтозадания будут выполняться в запланированное время или вообще:

В очень редких случаях задание может быть пропущено.

В очень редких случаях задание может выполняться дважды.

В некоторых случаях я реализовывал это и заметил, что через несколько дней он не работает должным образом с фоном.затем снова прочитайте их документацию и выясните причину.

Теперь я реализовал sidekiq-планировщик , и он работает правильно.

Надеюсь, это поможет.

...