【问题标题】:503 Error: Service Unavailable heroku while doing inference503 错误:在进行推理时服务不可用 heroku
【发布时间】:2022-02-07 05:34:04
【问题描述】:

我已经在 Heroku 中使用 Fast API 部署了一个机器学习模型,并且我已经实现了后台工作程序和异步,但是当我进行推理时,我仍然收到 503 错误。我知道 Heroku 中的服务器响应时间是 30 秒。

但是当我使用后台工作程序时,我应该能够在后台运行,相反,我遇到了错误。我正在使用 Heroku 免费计划进行部署


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)

Procfile: web: gunicorn -w 2 -k uvicorn.workers.UvicornWorker main:app

那么我应该怎么做才能在后台运行我的代码而不会出现服务器响应超时错误?

【问题讨论】:

    标签: python asynchronous heroku async-await fastapi


    【解决方案1】:

    您可以按照gunicorn documentation 中的说明将timeout 参数(与-t--timeout)添加到gunicorn。

    示例用法:

    gunicorn -w 2 -k uvicorn.workers.UvicornWorker -t 90 main:app
    

    【讨论】:

    • 没有用,30秒后停止
    猜你喜欢
    • 2020-05-26
    • 2013-10-31
    • 2014-02-17
    • 2011-08-04
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多