blocking_io_operation function below is an external method which I don't have a control. To run multiple request, I am running it in multiple thread using Threadpoolexecutor. Is there a better way to do this?
import asyncio
from concurrent.futures import ThreadPoolExecutor
# Simulating a blocking I/O operation
def blocking_io_operation(param1, param2):
    import time
    time.sleep(2)  # Simulating a 2-second blocking operation
    return f"Result from blocking operation with params: {param1}, {param2}"
async def handle_request(request_data, param1, param2, loop, executor):
    print(f"Received request: {request_data}")
    
    # Run the blocking I/O operation in a separate thread with multiple parameters
    result = await loop.run_in_executor(executor, blocking_io_operation, param1, param2)
    
    print(f"Blocking operation result: {result}")
    return f"Processed request: {request_data}"
async def main():
    loop = asyncio.get_event_loop()
    executor = ThreadPoolExecutor()
    
    # Simulate handling multiple incoming requests concurrently with different parameters
    requests = [
        ("Request 1", "Param1 for Request 1", "Param2 for Request 1"),
        ("Request 2", "Param1 for Request 2", "Param2 for Request 2"),
        ("Request 3", "Param1 for Request 3", "Param2 for Request 3")
    ]
    
    tasks = [handle_request(request[0], request[1], request[2], loop, executor) for request in requests]
    
    await asyncio.gather(*tasks)
    # Explicitly shutdown the executor to release resources
    executor.shutdown()
if __name__ == "__main__":
    asyncio.run(main())
 
    