[英]Heroku Scheduler task not running as expected
我正在使用Heroku的Scheduler插件在預定的時間間隔在我的應用程序中運行作業,就像傳統服務器環境中的cron一樣。 這些任務相當簡單,因為它們只是將一個sidekiq工作者排入隊列。 但是,正如您在下面的照片中看到的那樣:update_job_posts
由於某種原因無法在4:30UTC運行。
我不能用這種方式組合這兩個工作,還是需要單獨運行?
如果我用heroku run
任務,它就會通過。 heroku run
用於執行您的作業,因此您可以放心,如果它適用於heroku運行,它將在調度程序中運行。
$ 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是一個免費的附加組件,不保證作業將在預定的時間執行,或者根本不執行:
在極少數情況下,可能會跳過作業。
在極少數情況下,工作可能會運行兩次。
我在某些情況下實現了這一點,我注意到幾天之后它已經不能正常使用后台進程然后再次閱讀他們的文檔並找出原因。
現在我已經實現了sidekiq-scheduler並且它正常工作。
我希望它會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.