Improved "ArchiveQuery"
The existing `ArchiveQuery` has some obvious flaws. - #682 describes failure due to 502. This might be unavoidable if the API is under high load. ArchiveQuery should deal with it instead of error-ing out - #679 describes a JSON decode error. This should not happen, but obviously can happen. The ArchiveQuery should deal with it instead of error-ing out. Proper logging should also help to better identify the cause (e.g. specific calculation) - #680 describes that some required things are missing. This should be fixed in v1, which adds all required to the search. - [ ] The last point is implemented poorly, because references are treated like sub-sections and not followed Long running queries might always exhibit problems. The ArchiveQuery should be reimplemented with the explicit premise of API failures. As a consequence: - results should be cached explicitly, locally, and somewhat permanently - actual error handling - the implementation should be more modern, e.g. with asyncio Steps to take: - [x] get familiar with asyncio - [x] rework the `ArchiveQuery` implementation based on httpx + asyncio - [x] evaluate how much parallelism (asyncio again) we can use in the archive query API - [ ] rework the API accordingly - [ ] discuss the documentation examples with luca/luigi and martin/simon to make them more meaningful (this should finally also address the bugs above)
issue