Add config option for updating feeds on event

pull/553/head
Omar Roth 6 years ago
parent bb1ed902a9
commit 51c5f28443
No known key found for this signature in database
GPG Key ID: B8254FB7EC3D37F2

@ -130,7 +130,7 @@ end
# Start jobs # Start jobs
refresh_channels(PG_DB, logger, config.channel_threads, config.full_refresh) refresh_channels(PG_DB, logger, config.channel_threads, config.full_refresh)
refresh_feeds(PG_DB, logger, config.feed_threads) refresh_feeds(PG_DB, logger, config.feed_threads, config.use_feed_events)
subscribe_to_feeds(PG_DB, logger, HMAC_KEY, config) subscribe_to_feeds(PG_DB, logger, HMAC_KEY, config)
statistics = { statistics = {

@ -105,6 +105,7 @@ struct Config
hmac_key: String?, # HMAC signing key for CSRF tokens and verifying pubsub subscriptions hmac_key: String?, # HMAC signing key for CSRF tokens and verifying pubsub subscriptions
domain: String?, # Domain to be used for links to resources on the site where an absolute URL is required domain: String?, # Domain to be used for links to resources on the site where an absolute URL is required
use_pubsub_feeds: {type: Bool | Int32, default: false}, # Subscribe to channels using PubSubHubbub (requires domain, hmac_key) use_pubsub_feeds: {type: Bool | Int32, default: false}, # Subscribe to channels using PubSubHubbub (requires domain, hmac_key)
use_feed_events: {type: Bool, default: false}, # Update feeds on receiving notifications
default_home: {type: String, default: "Top"}, default_home: {type: String, default: "Top"},
feed_menu: {type: Array(String), default: ["Popular", "Top", "Trending", "Subscriptions"]}, feed_menu: {type: Array(String), default: ["Popular", "Top", "Trending", "Subscriptions"]},
top_enabled: {type: Bool, default: true}, top_enabled: {type: Bool, default: true},

@ -42,12 +42,12 @@ def refresh_channels(db, logger, max_threads = 1, full_refresh = false)
max_channel.send(max_threads) max_channel.send(max_threads)
end end
def refresh_feeds(db, logger, max_threads = 1) def refresh_feeds(db, logger, max_threads = 1, use_feed_events = false)
max_channel = Channel(Int32).new max_channel = Channel(Int32).new
# TODO: Make this config option, similar to use_pubsub # TODO: Instead of Fiber.yield, use proper queuing to prevent overloading DB
# Spawn thread to handle feed events # Spawn thread to handle feed events
if max_threads > 0 if use_feed_events
spawn do spawn do
PG.connect_listen(PG_URL, "feeds") do |event| PG.connect_listen(PG_URL, "feeds") do |event|
spawn do spawn do

Loading…
Cancel
Save