The document discusses various approaches for dealing with blocking code within the asyncio event loop: 1. Check if a compatible asyncio library exists 2. Check if a REST API is available to avoid blocking 3. Check if there is a simple text or binary protocol that can be implemented without blocking 4. Check if there is an existing synchronous Python client that can be adapted 5. Use a thread pool executor to run blocking code in separate threads to avoid blocking the event loop For filesystem and CPU intensive operations, the document recommends using a thread pool executor due to OS limitations on asynchronous filesystem access. The aiofiles library provides an asynchronous filesystem wrapper that uses threads in the background.