Migrate from another repository¶
You may want to import your existing records into your new InvenioRDM instance. How to export your data is highly dependent on your existing repository. As of now, InvenioRDM provides no tooling for this. However, to import the records into your instance, the REST API is the current easiest mechanism to do so.
Beforehand, prepare your records to conform to the REST API.
Then you will want to POST to the API to create the records, but InvenioRDM rate limits the API usage. By default, we don't want our API to be abused or subject to denial-of-service attacks. For the period of time when records are being ingested, however, you will want to allow a greater request rate.
Rate limiting¶
The Flask-Limiter library is used to control this via its configuration options. There you will find a range of configuration to adapt your strategy to your needs.
For our purposes, a couple of simple options are available:
Option 1: RATELIMIT_ENABLED¶
Simply disable rate limiting completely:
In invenio.cfg
:
RATELIMIT_ENABLED = False
This disables ALL rate limiting. It's probably good to take your application unreachable from the outside during that time.
Option 2: RATELIMIT_PER_ENDPOINT¶
Change the rate limit on the relevant endpoints for record (with files) creation / publication via RATELIMIT_PER_ENDPOINT
:
In invenio.cfg
:
RATELIMIT_PER_ENDPOINT = {
"records.create": "25000 per hour;500 per minute",
"records.publish": "25000 per hour;500 per minute",
"draft_files.create": "25000 per hour;500 per minute",
"draft_files.update_content": "25000 per hour;500 per minute",
"draft_files.create_commit": "25000 per hour;500 per minute"
}
Naturally, choose a rate that makes sense for you!
Rate limit strings
Flask-Limiter outlines the rate limit format that you can use to tailor your throughput as you see fit.
Restart your instance so it picks up the changed configuration.
Option 3: RATELIMIT_AUTHENTICATED_USER¶
Change the rate limit for authenticated users via RATELIMIT_AUTHENTICATED_USER
. Its default is "5000 per hour;100 per minute"
:
RATELIMIT_AUTHENTICATED_USER = "25000 per hour;500 per minute"
Restart your instance so it picks up the changed configuration.
Conclusion¶
When you are done importing your records, make sure to revert your rate limiting changes, by removing these configurations and restarting your instance.