```python
from fastapi import FastAPI, BackgroundTasks

import helpers

app = FastAPI()


@app.post("/reports")
async def create_report(rows: list):
    report = await run_in_threadpool(helpers.render_report, rows)
    return {"length": len(report)}
```

**Note:** The code above assumes you have `anyio` installed (which FastAPI already depends on). If you want to stick strictly to the standard library, here's the adjusted version using `concurrent.futures` with `asyncio.get_event_loop().run_in_executor`:

```python
from fastapi import FastAPI
import asyncio
from concurrent.futures import ThreadPoolExecutor

import helpers

app = FastAPI()

# Create a shared thread pool executor
executor = ThreadPoolExecutor(max_workers=4)


@app.post("/reports")
async def create_report(rows: list):
    loop = asyncio.get_event_loop()
    report = await loop.run_in_executor(executor, helpers.render_report, rows)
    return {"length": len(report)}
```