He implementado un modelo ml que toma un tiempo de inferencia único de 2 minutos. por lo tanto, recibo errores graves de tiempo de espera si he usado trabajadores en segundo plano en una API rápida para encargarme de la predicción, pero aún así recibo el mismo error. Y ahora no estoy seguro de si los trabajadores de fondo realmente están trabajando o no. He publicado el siguiente código que he convertido para hacer que las predicciones funcionen como tareas en segundo plano.
app = FastAPI() response = {} @app.get('/predict') async def predictions(solute, solvent): mol = Chem.MolFromSmiles(solute) response["predictions"] = delta_g.item() return {'result': response} async def predict(background_tasks: BackgroundTasks,solute,solvent): background_tasks.add_task(predictions,solute,solvent) from predict_json import json_data_func @app.get('/predict_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() return {'result': response_two} async def predict_two(background_tasks: BackgroundTasks,solute): background_tasks.add_task(predictions_two,solute)