Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

633
Vistas
No se pueden ejecutar tareas en segundo plano con fastapi - 504: error de tiempo de espera de la puerta de enlace

Estoy usando fastapi para hacer predicciones en un modelo ml. Debido a que una sola predicción tarda más de 2 minutos, he hecho que la predicción se ejecute como una tarea en segundo plano usando las tareas en segundo plano de fastapi. Ahora, cuando implementé en Digital Ocean, no pude ejecutar el trabajador en segundo plano. Recibo 504: Gateway Timeout Error de enlace.

comando de inicio

 gunicorn --worker-tmp-dir /dev/shm --config gunicorn.config.py main:app

gunicorn.config.py

 bind = "0.0.0.0:8080" workers = 4 worker_class = "uvicorn.workers.UvicornWorker"

main.py

 response = {} async def predictions(solute, solvent): mol = Chem.MolFromSmiles(solute) solute_graph = get_graph_from_smile(solute) mol = Chem.MolFromSmiles(solvent) solvent_graph = get_graph_from_smile(solvent) delta_g, interaction_map = model([solute_graph.to(device), solvent_graph.to(device)]) interaction_map_one = torch.trunc(interaction_map) response["interaction_map"] = (interaction_map_one.detach().numpy()).tolist() response["predictions"] = delta_g.item() @app.post('/predict_solubility') async def post(): return {'result': response} @app.post('/predict') async def predict(background_tasks: BackgroundTasks,solute,solvent): background_tasks.add_task(predictions,solute,solvent) return {'success'} response_two = {} async def predictions_two(solute): for i in data: delta_g, interaction_map = model([get_graph_from_smile(Chem.MolToSmiles(Chem.AddHs(Chem.MolFromSmiles(solute)))).to(device), get_graph_from_smile(Chem.MolToSmiles(Chem.AddHs(Chem.MolFromSmiles(i)))).to(device)]) response_two[i] = delta_g.item() @app.post('/predict_solubility_json') async def post(): return {'result': response_two} @app.get('/predict_two') async def predict_two(background_tasks: BackgroundTasks,solute): background_tasks.add_task(predictions_two,solute) return {'success'} if __name__ == "__main__": uvicorn.run(app,host="0.0.0.0", port=8000, reload=True)

He agregado un worker en el océano digital de los componentes a pesar de que todavía tengo un tiempo de espera del servidor. No estoy seguro de si no he implementado tareas en segundo plano usando fastapi porque hay algún problema con mi comando de inicio

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda