Celery-based feed processing extension for InvenioRDM.
Project description
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
Environment variables
# InvenioRDM instance to read/write
FLASK_INVENIORDM_API=https://rogue-scholar.org # default
FLASK_INVENIORDM_TOKEN=<bearer-token>
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file invenio_feeds-0.1.2.tar.gz.
File metadata
- Download URL: invenio_feeds-0.1.2.tar.gz
- Upload date:
- Size: 119.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef1cece26d9146a1c440a0aae3991f87795d40b0ab3aee272f360a2e5066eedf
|
|
| MD5 |
95c4e064845d6bc5f0e2351da45c3712
|
|
| BLAKE2b-256 |
19e739d881e2ca1adbd0af96b1ce355dab8353c84edbe9907139fbbc4e66f732
|
File details
Details for the file invenio_feeds-0.1.2-py3-none-any.whl.
File metadata
- Download URL: invenio_feeds-0.1.2-py3-none-any.whl
- Upload date:
- Size: 125.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4480057e178f2c9c5cde8b5345d68dc34a095a251c1b0d7734f7cdda48cd782f
|
|
| MD5 |
da2b97adb6c3edb427a0996f98dea2c5
|
|
| BLAKE2b-256 |
ad1420060dbf788d7eb2e3b8e559754186be56ead7fae102e9ba2d79a3b995f5
|