invenio-feeds
Celery-based feed processing extension for InvenioRDM, powering the Rogue Scholar science blog archive.
invenio-feeds replaces the former Flask/REST API with Celery workers that periodically fetch blog feeds, normalise posts, and upsert them as InvenioRDM records and communities. It follows the standard invenio-base extension pattern and integrates into any InvenioRDM instance.
Installation
Requires Python 3.14. Uses uv for dependency management.
uv sync
Running
Celery worker
celery -A invenio_feeds.tasks worker --loglevel=info
Celery beat scheduler (periodic tasks)
celery -A invenio_feeds.tasks beat --loglevel=info
Trigger a feed import manually
celery -A invenio_feeds.tasks call invenio_feeds.process_blog_feed --args='["<blog-slug>"]'
Scheduled tasks
| Task | Schedule | Description |
|---|---|---|
invenio_feeds.process_all_feeds |
every 30 min | Fan-out: one process_blog_feed per active blog |
invenio_feeds.process_blog_feed |
on-demand | Fetch and upsert all new posts for one blog |
invenio_feeds.classify_all_blogs |
daily 03:00 UTC | Fan-out: classify untagged posts per blog |
Development
We use pytest for testing:
uv run pytest
Follow along via Codeberg Issues. Please open an issue if you encounter a bug or have a feature request.
Note on Patches/Pull Requests
- Fork the project
- Write tests for your new feature or a test that reproduces a bug
- Implement your feature or make a bug fix
- Do not mess with Rakefile, version or history
- Commit, push and make a pull request. Bonus points for topical branches.
Documentation
Documentation (work in progress) for using Rogue Scholar is available at the Rogue Scholar Documentation website.
Meta
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
License: MIT
Metadata
Release files for invenio-feeds 0.3.16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| invenio_feeds-0.3.16.tar.gz | 181.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| invenio_feeds-0.3.16-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 376.9 kB
Release files / invenio_feeds-0.3.16.tar.gz
| Download URL | invenio_feeds-0.3.16.tar.gz |
|---|---|
| Size | 181.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a1649fa62f66a47894744a65f2824516fc3c79e55b9dce41ea59956dc70eae19
|
|
BLAKE2b-256 checksum How to use checksums |
1f463716809427a5df5ed231145892a859f1a45b92d05c1788f508b0ef3224c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / invenio_feeds-0.3.16-py3-none-any.whl
| Download URL | invenio_feeds-0.3.16-py3-none-any.whl |
|---|---|
| Size | 195.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
327f5cdedf1a8ac388827efb18108b8ef3a489ebe4ef00914a4bc66bccf55161
|
|
BLAKE2b-256 checksum How to use checksums |
07b78ec6cdbc95640093a2a7994d135ff3591249545b11f7b2284c4e6edd063e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|