summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-10-10 08:01:08 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-02-19 14:43:48 +0100
commit175f1e5bfe427511d0d4d93457f24137bf94c644 (patch)
treeb0bdf4f6d642f20bbd1455870ef5cbdad8299911 /ishtar_common/utils.py
parent2a28770954bd2eb699995e5e106109601f87fd1e (diff)
downloadIshtar-175f1e5bfe427511d0d4d93457f24137bf94c644.tar.bz2
Ishtar-175f1e5bfe427511d0d4d93457f24137bf94c644.zip
✨ display forum entries: activate/deactivate by user profile - profile form: edit news/forum display
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r--ishtar_common/utils.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index 9b84804e8..09e83714b 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -2854,12 +2854,22 @@ def get_news_feed():
news_feed = cache.get(cache_key)
if news_feed is None:
news_feed = update_news_feed()
- cache.set(cache_key, news_feed, timeout=settings.CACHE_TIMEOUT)
+ # "" could be a temporary unavailability of the forum re-test 5 minutes later
+ timeout = settings.CACHE_TIMEOUT if news_feed != "" else 60 * 5
+ cache.set(cache_key, news_feed, timeout=timeout)
return news_feed
def update_news_feed():
- feed = feedparser.parse(settings.ISHTAR_FEED_URL)
+ try:
+ response = requests.get(settings.ISHTAR_FEED_URL, timeout=5)
+ except requests.ReadTimeout:
+ logger.warning(f"Timeout when reading RSS {settings.ISHTAR_FEED_URL}")
+ return ""
+
+ # Put it to memory stream object universal feedparser
+ content = io.BytesIO(response.content)
+ feed = feedparser.parse(content)
news_feed = []
if "entries" in feed:
for entry in feed["entries"][:5]: