Melhorando o desempenho da resposta JSON no FastAPI com dados grandes
Os usuários do FastAPI encontram atrasos significativos ao retornar dados JSON volumosos por meio de endpoints. Uma solução abrangente envolve abordar vários fatores, incluindo recuperação de dados, serialização e exibição do lado do cliente.
Extração e leitura de dados
Conforme destacado no código de exemplo, dados é inicialmente extraído de um arquivo Parquet usando a função read_parquet() do Pandas, que converte os dados em um DataFrame do Pandas. Para aumentar a eficiência, considere utilizar bibliotecas alternativas como Dask, projetadas especificamente para lidar com grandes conjuntos de dados. O método read_parquet() de Dask pode melhorar significativamente a velocidade de leitura de dados.
Serialização JSON
A etapa subsequente de serialização JSON prova ser o principal gargalo de desempenho. Por padrão, FastAPI emprega a função json.dumps() padrão do Python, resultando em desempenho abaixo do ideal. Para acelerar esse processo, codificadores JSON alternativos como orjson ou ujson podem ser usados, reduzindo bastante os tempos de serialização.
Otimização do tipo de resposta
Em certos cenários, retornando um DataFrame do Pandas como uma resposta JSON pode levar a problemas de memória devido à alocação de RAM para o DataFrame e a saída JSON. Para resolver isso, considere usar df.to_json() sem especificar um caminho de arquivo, que transmite a saída JSON diretamente para o cliente sem armazená-la na memória.
Exibição do lado do cliente
Mesmo com técnicas de serialização otimizadas, a exibição de dados substanciais no navegador do lado do cliente pode introduzir atrasos adicionais devido à análise e renderização de dados. Para mitigar isso, explore opções como fornecer um link de download em vez de exibição no navegador, descarregando assim o processamento de dados para a máquina do cliente.
Ao implementar essas técnicas, os desenvolvedores podem melhorar drasticamente o desempenho dos endpoints FastAPI que retornam grandes quantidades de dados JSON, garantindo uma experiência de usuário responsiva e eficiente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3