Caching an Asyncio Function the Easy Way

If you've used asyncio for some time you've probably noticed a few things that work differently to the synchronous counter parts. I recently had to add some caching to an asyncio function. Let's say something like: async def get_user ( user_id : UUID ) -> User : ... Of course naturally we want to use functools …