From 4590da2fc3d987289ae0bf5ed8fad6528b91fb39 Mon Sep 17 00:00:00 2001 From: notsmarthuman <154960976+notsmarthuman@users.noreply.github.com> Date: Wed, 3 Jan 2024 02:33:15 +0000 Subject: [PATCH] Add `FORCE_REFRESH_INTERVAL` config option --- internal/config/config_test.go | 35 +++++++++++++++++++++++++ internal/config/options.go | 9 +++++++ internal/config/parser.go | 2 ++ internal/locale/translations/de_DE.json | 5 +++- internal/locale/translations/el_EL.json | 5 +++- internal/locale/translations/en_US.json | 5 +++- internal/locale/translations/es_ES.json | 5 +++- internal/locale/translations/fi_FI.json | 5 +++- internal/locale/translations/fr_FR.json | 5 +++- internal/locale/translations/hi_IN.json | 5 +++- internal/locale/translations/id_ID.json | 5 +++- internal/locale/translations/it_IT.json | 5 +++- internal/locale/translations/ja_JP.json | 5 +++- internal/locale/translations/nl_NL.json | 5 +++- internal/locale/translations/pl_PL.json | 5 +++- internal/locale/translations/pt_BR.json | 5 +++- internal/locale/translations/ru_RU.json | 5 +++- internal/locale/translations/tr_TR.json | 5 +++- internal/locale/translations/uk_UA.json | 5 +++- internal/locale/translations/zh_CN.json | 5 +++- internal/locale/translations/zh_TW.json | 5 +++- internal/ui/feed_refresh.go | 6 +++-- miniflux.1 | 4 +++ 23 files changed, 126 insertions(+), 20 deletions(-) diff --git a/internal/config/config_test.go b/internal/config/config_test.go index a149d7f0..b0995fe4 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -759,6 +759,41 @@ func TestPollingFrequency(t *testing.T) { } } +func TestDefautForceRefreshInterval(t *testing.T) { + os.Clearenv() + + parser := NewParser() + opts, err := parser.ParseEnvironmentVariables() + if err != nil { + t.Fatalf(`Parsing failure: %v`, err) + } + + expected := defaultForceRefreshInterval + result := opts.ForceRefreshInterval() + + if result != expected { + t.Fatalf(`Unexpected FORCE_REFRESH_INTERVAL value, got %v instead of %v`, result, expected) + } +} + +func TestForceRefreshInterval(t *testing.T) { + os.Clearenv() + os.Setenv("FORCE_REFRESH_INTERVAL", "42") + + parser := NewParser() + opts, err := parser.ParseEnvironmentVariables() + if err != nil { + t.Fatalf(`Parsing failure: %v`, err) + } + + expected := 42 + result := opts.ForceRefreshInterval() + + if result != expected { + t.Fatalf(`Unexpected FORCE_REFRESH_INTERVAL value, got %v instead of %v`, result, expected) + } +} + func TestDefaultBatchSizeValue(t *testing.T) { os.Clearenv() diff --git a/internal/config/options.go b/internal/config/options.go index abbaf849..dc3d7063 100644 --- a/internal/config/options.go +++ b/internal/config/options.go @@ -29,6 +29,7 @@ const ( defaultBasePath = "" defaultWorkerPoolSize = 5 defaultPollingFrequency = 60 + defaultForceRefreshInterval = 30 defaultBatchSize = 100 defaultPollingScheduler = "round_robin" defaultSchedulerEntryFrequencyMinInterval = 5 @@ -122,6 +123,7 @@ type Options struct { cleanupArchiveBatchSize int cleanupRemoveSessionsDays int pollingFrequency int + forceRefreshInterval int batchSize int pollingScheduler string schedulerEntryFrequencyMinInterval int @@ -200,6 +202,7 @@ func NewOptions() *Options { cleanupArchiveBatchSize: defaultCleanupArchiveBatchSize, cleanupRemoveSessionsDays: defaultCleanupRemoveSessionsDays, pollingFrequency: defaultPollingFrequency, + forceRefreshInterval: defaultForceRefreshInterval, batchSize: defaultBatchSize, pollingScheduler: defaultPollingScheduler, schedulerEntryFrequencyMinInterval: defaultSchedulerEntryFrequencyMinInterval, @@ -378,6 +381,11 @@ func (o *Options) PollingFrequency() int { return o.pollingFrequency } +// ForceRefreshInterval returns the force refresh interval +func (o *Options) ForceRefreshInterval() int { + return o.forceRefreshInterval +} + // BatchSize returns the number of feeds to send for background processing. func (o *Options) BatchSize() int { return o.batchSize @@ -663,6 +671,7 @@ func (o *Options) SortedOptions(redactSecret bool) []*Option { "OAUTH2_USER_CREATION": o.oauth2UserCreationAllowed, "POCKET_CONSUMER_KEY": redactSecretValue(o.pocketConsumerKey, redactSecret), "POLLING_FREQUENCY": o.pollingFrequency, + "FORCE_REFRESH_INTERVAL": o.forceRefreshInterval, "POLLING_PARSING_ERROR_LIMIT": o.pollingParsingErrorLimit, "POLLING_SCHEDULER": o.pollingScheduler, "PROXY_HTTP_CLIENT_TIMEOUT": o.proxyHTTPClientTimeout, diff --git a/internal/config/parser.go b/internal/config/parser.go index d64d67c7..65c98231 100644 --- a/internal/config/parser.go +++ b/internal/config/parser.go @@ -142,6 +142,8 @@ func (p *Parser) parseLines(lines []string) (err error) { p.opts.workerPoolSize = parseInt(value, defaultWorkerPoolSize) case "POLLING_FREQUENCY": p.opts.pollingFrequency = parseInt(value, defaultPollingFrequency) + case "FORCE_REFRESH_INTERVAL": + p.opts.forceRefreshInterval = parseInt(value, defaultForceRefreshInterval) case "BATCH_SIZE": p.opts.batchSize = parseInt(value, defaultBatchSize) case "POLLING_SCHEDULER": diff --git a/internal/locale/translations/de_DE.json b/internal/locale/translations/de_DE.json index d216fb27..c2b18245 100644 --- a/internal/locale/translations/de_DE.json +++ b/internal/locale/translations/de_DE.json @@ -453,7 +453,10 @@ "vor %d Jahr", "vor %d Jahren" ], - "alert.too_many_feeds_refresh": "Sie haben zu viele Aktualisierungen ausgelöst. Bitte warten Sie 30 Minuten, bevor Sie es erneut versuchen.", + "alert.too_many_feeds_refresh": [ + "Sie haben zu viele Aktualisierungen ausgelöst. Bitte warten Sie %d Minute, bevor Sie es erneut versuchen.", + "Sie haben zu viele Aktualisierungen ausgelöst. Bitte warten Sie %d Minuten, bevor Sie es erneut versuchen." + ], "alert.background_feed_refresh": "Alle Abonnements werden derzeit im Hintergrund aktualisiert. Sie können Miniflux weiterhin benutzen, während dieser Prozess ausgeführt wird.", "error.http_response_too_large": "Die HTTP-Antwort ist zu groß. Sie könnten die Grenze für die Größe der HTTP-Antwort in den globalen Einstellungen erhöhen (benötigt einen Neustart des Servers)", "error.http_body_read": "Der HTTP-Inhalt kann nicht gelesen werden: %v", diff --git a/internal/locale/translations/el_EL.json b/internal/locale/translations/el_EL.json index da4059f8..aa338d32 100644 --- a/internal/locale/translations/el_EL.json +++ b/internal/locale/translations/el_EL.json @@ -453,7 +453,10 @@ "πριν %d έτος", "πριν %d έτη" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/en_US.json b/internal/locale/translations/en_US.json index ba8d560d..2e7619cd 100644 --- a/internal/locale/translations/en_US.json +++ b/internal/locale/translations/en_US.json @@ -453,7 +453,10 @@ "%d year ago", "%d years ago" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/es_ES.json b/internal/locale/translations/es_ES.json index 2fa208b9..39f40869 100644 --- a/internal/locale/translations/es_ES.json +++ b/internal/locale/translations/es_ES.json @@ -453,7 +453,10 @@ "hace %d año", "hace %d años" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/fi_FI.json b/internal/locale/translations/fi_FI.json index 5d427e0a..c05e5b40 100644 --- a/internal/locale/translations/fi_FI.json +++ b/internal/locale/translations/fi_FI.json @@ -453,7 +453,10 @@ "%d vuosi sitten", "%d vuotta sitten" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/fr_FR.json b/internal/locale/translations/fr_FR.json index 57f05b99..7640365d 100644 --- a/internal/locale/translations/fr_FR.json +++ b/internal/locale/translations/fr_FR.json @@ -453,7 +453,10 @@ "il y a %d an", "il y a %d ans" ], - "alert.too_many_feeds_refresh": "Vous avez déclenché trop d'actualisations de flux. Veuillez attendre 30 minutes avant de réessayer.", + "alert.too_many_feeds_refresh": [ + "Vous avez déclenché trop d'actualisations de flux. Veuillez attendre %d minute avant de réessayer.", + "Vous avez déclenché trop d'actualisations de flux. Veuillez attendre %d minutes avant de réessayer." + ], "alert.background_feed_refresh": "Les abonnements sont en cours d'actualisation en arrière-plan. Vous pouvez continuer à naviguer dans l'application.", "error.http_response_too_large": "La réponse HTTP est trop volumineuse. Vous pouvez augmenter la limite de taille de réponse HTTP dans les paramètres de l'application (redémarrage de l'application nécessaire).", "error.http_body_read": "Impossible de lire le corps de la réponse HTTP : %v.", diff --git a/internal/locale/translations/hi_IN.json b/internal/locale/translations/hi_IN.json index 3bff399e..36135192 100644 --- a/internal/locale/translations/hi_IN.json +++ b/internal/locale/translations/hi_IN.json @@ -453,7 +453,10 @@ "%d साल पहले", "%d वर्षों पहले" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/id_ID.json b/internal/locale/translations/id_ID.json index f9c784df..a550e23f 100644 --- a/internal/locale/translations/id_ID.json +++ b/internal/locale/translations/id_ID.json @@ -444,7 +444,10 @@ "time_elapsed.years": [ "%d tahun yang lalu" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/it_IT.json b/internal/locale/translations/it_IT.json index b9aa5e87..ca464cf1 100644 --- a/internal/locale/translations/it_IT.json +++ b/internal/locale/translations/it_IT.json @@ -453,7 +453,10 @@ "%d anno fa", "%d anni fa" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/ja_JP.json b/internal/locale/translations/ja_JP.json index df8c081b..5d5031bd 100644 --- a/internal/locale/translations/ja_JP.json +++ b/internal/locale/translations/ja_JP.json @@ -453,7 +453,10 @@ "%d 年前", "%d 年前" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/nl_NL.json b/internal/locale/translations/nl_NL.json index a1b71b87..38d6a76c 100644 --- a/internal/locale/translations/nl_NL.json +++ b/internal/locale/translations/nl_NL.json @@ -453,7 +453,10 @@ "%d jaar geleden", "%d jaar geleden" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/pl_PL.json b/internal/locale/translations/pl_PL.json index 8476ed94..7ff83d73 100644 --- a/internal/locale/translations/pl_PL.json +++ b/internal/locale/translations/pl_PL.json @@ -462,7 +462,10 @@ "%d lat temu", "%d lat temu" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/pt_BR.json b/internal/locale/translations/pt_BR.json index 662a9af1..5fef829c 100644 --- a/internal/locale/translations/pt_BR.json +++ b/internal/locale/translations/pt_BR.json @@ -453,7 +453,10 @@ "há %d ano", "há %d anos" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/ru_RU.json b/internal/locale/translations/ru_RU.json index be71010f..e86c5bf4 100644 --- a/internal/locale/translations/ru_RU.json +++ b/internal/locale/translations/ru_RU.json @@ -462,7 +462,10 @@ "%d года назад", "%d лет назад" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/tr_TR.json b/internal/locale/translations/tr_TR.json index 31667057..1ac1ac31 100644 --- a/internal/locale/translations/tr_TR.json +++ b/internal/locale/translations/tr_TR.json @@ -453,7 +453,10 @@ "%d yıl önce", "%d yıl önce" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/uk_UA.json b/internal/locale/translations/uk_UA.json index 6950cccc..81de6015 100644 --- a/internal/locale/translations/uk_UA.json +++ b/internal/locale/translations/uk_UA.json @@ -463,7 +463,10 @@ "%d роки тому", "%d років тому" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/zh_CN.json b/internal/locale/translations/zh_CN.json index a3993b80..d8f5cbbf 100644 --- a/internal/locale/translations/zh_CN.json +++ b/internal/locale/translations/zh_CN.json @@ -445,7 +445,10 @@ "time_elapsed.years": [ "%d 年前" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/locale/translations/zh_TW.json b/internal/locale/translations/zh_TW.json index 126f1f5c..172e70dc 100644 --- a/internal/locale/translations/zh_TW.json +++ b/internal/locale/translations/zh_TW.json @@ -453,7 +453,10 @@ "%d 年前", "%d 年前" ], - "alert.too_many_feeds_refresh": "You have triggered too many feed refreshes. Please wait 30 minutes before trying again.", + "alert.too_many_feeds_refresh": [ + "You have triggered too many feed refreshes. Please wait %d minute before trying again.", + "You have triggered too many feed refreshes. Please wait %d minutes before trying again." + ], "alert.background_feed_refresh": "All feeds are being refreshed in the background. You can continue to use Miniflux while this process is running.", "error.http_response_too_large": "The HTTP response is too large. You could increase the HTTP response size limit in the global settings (requires a server restart).", "error.http_body_read": "Unable to read the HTTP body: %v.", diff --git a/internal/ui/feed_refresh.go b/internal/ui/feed_refresh.go index eb207a84..b1147073 100644 --- a/internal/ui/feed_refresh.go +++ b/internal/ui/feed_refresh.go @@ -8,6 +8,7 @@ import ( "net/http" "time" + "miniflux.app/v2/internal/config" "miniflux.app/v2/internal/http/request" "miniflux.app/v2/internal/http/response/html" "miniflux.app/v2/internal/http/route" @@ -37,8 +38,9 @@ func (h *handler) refreshAllFeeds(w http.ResponseWriter, r *http.Request) { sess := session.New(h.store, request.SessionID(r)) // Avoid accidental and excessive refreshes. - if time.Now().UTC().Unix()-request.LastForceRefresh(r) < 1800 { - sess.NewFlashErrorMessage(printer.Printf("alert.too_many_feeds_refresh")) + if time.Now().UTC().Unix()-request.LastForceRefresh(r) < int64(config.Opts.ForceRefreshInterval())*60 { + time := config.Opts.ForceRefreshInterval() + sess.NewFlashErrorMessage(printer.Plural("alert.too_many_feeds_refresh", time, time)) } else { // We allow the end-user to force refresh all its feeds // without taking into consideration the number of errors. diff --git a/miniflux.1 b/miniflux.1 index 7bf9ebd1..e58442cf 100644 --- a/miniflux.1 +++ b/miniflux.1 @@ -172,6 +172,10 @@ Refresh interval in minutes for feeds\&. .br Default is 60 minutes\&. .TP +.B FORCE_REFRESH_INTERVAL +The minimum interval for manual refresh\&. +.br +Default is 30 minutes\&. .B BATCH_SIZE Number of feeds to send to the queue for each interval\&. .br