Skip to content

Commit c6181d5

Browse files
committed
Merge pull request stringer-rss#283 from swanson/experiment-with-workers
Experiment with workers
2 parents ddb6bef + 77e2a41 commit c6181d5

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ cd stringer
2929
heroku create
3030
git push heroku master
3131

32+
heroku config:set APP_URL=`heroku apps:info | grep -o 'http[^"]*'`
3233
heroku config:set SECRET_TOKEN=`openssl rand -hex 20`
3334

3435
heroku run rake db:migrate

Rakefile

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
require "sinatra/activerecord/rake"
22
require "rubygems"
33
require "bundler"
4+
require "net/http"
45
Bundler.require
56

67
require "./app"
8+
require_relative "./app/jobs/fetch_feed_job"
79
require_relative "./app/tasks/fetch_feeds"
810
require_relative "./app/tasks/change_password"
911
require_relative "./app/tasks/remove_old_stories.rb"
@@ -13,6 +15,18 @@ task :fetch_feeds do
1315
FetchFeeds.new(Feed.all).fetch_all
1416
end
1517

18+
desc "Lazily fetch all feeds."
19+
task :lazy_fetch do
20+
if ENV['APP_URL']
21+
uri = URI(ENV['APP_URL'])
22+
Net::HTTP.get_response(uri)
23+
end
24+
25+
FeedRepository.list.each do |feed|
26+
Delayed::Job.enqueue FetchFeedJob.new(feed.id)
27+
end
28+
end
29+
1630
desc "Fetch single feed"
1731
task :fetch_feed, :id do |t, args|
1832
FetchFeed.new(Feed.find(args[:id])).fetch
@@ -25,7 +39,12 @@ end
2539

2640
desc "Work the delayed_job queue."
2741
task :work_jobs do
28-
Delayed::Worker.new(:min_priority => ENV['MIN_PRIORITY'], :max_priority => ENV['MAX_PRIORITY']).start
42+
Delayed::Job.delete_all
43+
44+
3.times do
45+
Delayed::Worker.new(:min_priority => ENV['MIN_PRIORITY'],
46+
:max_priority => ENV['MAX_PRIORITY']).start
47+
end
2948
end
3049

3150
desc "Change your password"

app/jobs/fetch_feed_job.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class FetchFeedJob < Struct.new(:feed_id)
2+
def perform
3+
feed = FeedRepository.fetch(feed_id)
4+
FetchFeed.new(feed).fetch
5+
end
6+
end

config/unicorn.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
worker_processes 3
1+
worker_processes 1
22
timeout 30
33
preload_app true
44

0 commit comments

Comments
 (0)