@isagalaev
There you go
https://github.com/requests-cache
The org has caching for both requests and aiohttp package.
Edit: aaah I didn't see that you have tried it already. I was fairly happy with the aiohttp one. It can be configured to cache only if an OK status is obtained.
You can look here for pointers.