The default paginate function is used to paginate the data that is already in memory.
fromfastapiimportFastAPIfromfastapi_paginationimportadd_pagination,paginate,Pageapp=FastAPI()add_pagination(app)# req: GET /nums?page=2&size=10@app.get("/nums")asyncdefget_users()->Page[int]:returnpaginate(range(200))
If you want to use async paginate function, you can use fastapi_pagination.async_paginator module.
It exists to be able to use async transformer function.
fromfastapiimportFastAPIfromfastapi_paginationimportadd_pagination,Pagefromfastapi_pagination.async_paginatorimportpaginateapp=FastAPI()add_pagination(app)# req: GET /nums?page=2&size=10@app.get("/nums")asyncdefget_users()->Page[int]:returnawaitpaginate(range(200))
If you have iterable generator, and you want to paginate it, you can use paginate
from fastapi_pagination.iterables function.
fromtypingimportIterablefromfastapiimportFastAPIfromfastapi_paginationimportadd_pagination,Pagefromfastapi_pagination.iterablesimportpaginateapp=FastAPI()add_pagination(app)defnums()->Iterable[int]:foriinrange(200):yieldi# req: GET /nums?page=2&size=10@app.get("/nums")asyncdefget_users()->Page[int]:returnpaginate(nums())