Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

378
Visualizações
¿Cómo compartir variables entre solicitudes HTTP en FastAPI?

Me pregunto cómo puedo compartir el valor de las variables entre solicitudes HTTP en FastAPI. Por ejemplo, tengo una solicitud POST en la que obtengo algunos archivos de audio y luego convierto su información en un marco de datos de Pandas. Me gustaría enviar ese marco de datos en una solicitud GET , pero no puedo acceder al marco de datos en el alcance de la solicitud GET .

 @app.post( path="/upload-audios/", status_code=status.HTTP_200_OK ) async def upload_audios(audios: list[UploadFile] = File(...)): filenames = [audio.filename for audio in audios] audio_data = [audio.file for audio in audios] new_data = [] final_data = [] header = ["name", "file"] for i in range(len(audios)): new_data = [filenames[i], audio_data[i]] final_data.append(new_data) new_df = pd.DataFrame(final_data, columns=header) return f"You have uploaded {len(audios)} audios which names are: {filenames}" @app.get("/get-dataframe/") async def get_dataframe(): pass
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si necesita acceso de solo lectura a esa variable y/o nunca espera que alguna otra solicitud la cambie antes de leerla (en otras palabras, nunca espera servir a más de un cliente), así como lo hace su aplicación no use varios trabajadores al mismo tiempo (donde cada trabajador tiene su propia memoria ), podría (como lo menciona @MatsLindh en los comentarios) declarar un diccionario foo = {} fuera de los puntos finales y asignarle una clave dentro del punto final foo['pd'] = new_df (que luego puede recuperar), o declarar su variable como global (como se describe aquí ), o, preferiblemente, almacenarla en la instancia de la aplicación . Por ejemplo:

 app.state.new_df = new_df

Dentro del punto final get-dataframe recupere el new_df como:

 new_df = app.state.new_df

o, si la instancia de la app no está disponible en el archivo desde el que está trabajando (supongamos que tiene sus puntos finales definidos en submódulos, separados del módulo principal, como se describe aquí ), puede obtener la instancia de la app del objeto Request :

 from fastAPI import Request @app.get("/get-dataframe/") async def get_dataframe(request: Request): return request.app.state.new_df

De lo contrario, si necesita que esa variable/objeto se comparta entre diferentes clientes, así como entre múltiples procesos/trabajadores, que también pueden requerir acceso de lectura/escritura, debería usar un almacenamiento de base de datos, como PostgreSQL , SQLite , etc. MongoDB , etc., o tiendas Key-Value (cachés), como Redis , Memcached , etc. Es posible que también desee echar un vistazo a esta respuesta .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda