Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

377
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!