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

632
Views
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
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!