Honor 429 Too Many Requests and 503 Service Unavailable responses
All checks were successful
Test and build Docker image / docker (push) Successful in 1m33s
All checks were successful
Test and build Docker image / docker (push) Successful in 1m33s
This commit is contained in:
@ -2,6 +2,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import pprint
|
import pprint
|
||||||
import re
|
import re
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
@ -303,7 +304,10 @@ def send_to_discord(custom_reader: Reader | None = None, feed: Feed | None = Non
|
|||||||
reader: Reader = get_reader() if custom_reader is None else custom_reader
|
reader: Reader = get_reader() if custom_reader is None else custom_reader
|
||||||
|
|
||||||
# Check for new entries for every feed.
|
# Check for new entries for every feed.
|
||||||
reader.update_feeds()
|
reader.update_feeds(
|
||||||
|
scheduled=True,
|
||||||
|
workers=os.cpu_count() or 1,
|
||||||
|
)
|
||||||
|
|
||||||
# Loop through the unread entries.
|
# Loop through the unread entries.
|
||||||
entries: Iterable[Entry] = reader.get_entries(feed=feed, read=False)
|
entries: Iterable[Entry] = reader.get_entries(feed=feed, read=False)
|
||||||
|
@ -100,9 +100,9 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None]:
|
|||||||
add_missing_tags(reader)
|
add_missing_tags(reader)
|
||||||
scheduler: AsyncIOScheduler = AsyncIOScheduler()
|
scheduler: AsyncIOScheduler = AsyncIOScheduler()
|
||||||
|
|
||||||
# Update all feeds every 15 minutes.
|
# Run job every minute to check for new entries. Feeds will be checked every 15 minutes.
|
||||||
# TODO(TheLovinator): Make this configurable.
|
# TODO(TheLovinator): Make this configurable.
|
||||||
scheduler.add_job(send_to_discord, "interval", minutes=15, next_run_time=datetime.now(tz=UTC))
|
scheduler.add_job(send_to_discord, "interval", minutes=1, next_run_time=datetime.now(tz=UTC))
|
||||||
scheduler.start()
|
scheduler.start()
|
||||||
logger.info("Scheduler started.")
|
logger.info("Scheduler started.")
|
||||||
yield
|
yield
|
||||||
|
@ -24,7 +24,7 @@ default_custom_embed: dict[str, str] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@lru_cache
|
@lru_cache(maxsize=1)
|
||||||
def get_reader(custom_location: Path | None = None) -> Reader:
|
def get_reader(custom_location: Path | None = None) -> Reader:
|
||||||
"""Get the reader.
|
"""Get the reader.
|
||||||
|
|
||||||
@ -35,5 +35,10 @@ def get_reader(custom_location: Path | None = None) -> Reader:
|
|||||||
The reader.
|
The reader.
|
||||||
"""
|
"""
|
||||||
db_location: Path = custom_location or Path(data_dir) / "db.sqlite"
|
db_location: Path = custom_location or Path(data_dir) / "db.sqlite"
|
||||||
|
reader: Reader = make_reader(url=str(db_location))
|
||||||
|
|
||||||
return make_reader(url=str(db_location))
|
# https://reader.readthedocs.io/en/latest/api.html#reader.types.UpdateConfig
|
||||||
|
# Set the update interval to 15 minutes
|
||||||
|
reader.set_tag((), ".reader.update", {"interval": 15})
|
||||||
|
|
||||||
|
return reader
|
||||||
|
Reference in New Issue
Block a user