簡體   English   中英

跨請求共享全局信息到Heroku上的Flask端點

[英]Sharing global information across requests to flask endpoints on heroku

我有一個帶有單個端點的flask應用程序,如下所示(簡化如下):

@app.route('/classify', methods=['POST'])
def classify():
    p = g.model_loader.get_model()
    json = request.get_json()
    text = json['text']
    return p.classify(text)


def main():
    model_loader = ResourceLoader()
    with app.app_context():
        g.model_loader = model_loader
        app.run()


if __name__ == '__main__':
    main()

應用程序需要main方法中一次將機器學習模型加載到內存 ,然后使用該模型對通過POST發送到flask端點的文本進行分類。 我嘗試使用在本地工作的應用程序上下文來執行此操作,但是在heroku上不起作用。 我目前的理解是,這是因為應用程序上下文未在工作人員之間共享。 如何授予classify端點對模型加載器的訪問權限?

編輯:我沒有正確表達最初的問題。 每個工作程序都應運行main() ,因此應該可以在其自己的應用程序上下文中訪問model_loader 但是,當我在heroku上運行它時,我得到AttributeError: '_AppCtxGlobals' object has no attribute 'model_loader' 應用程序上下文在heroku上是否有所不同?

您不能一次將其加載到內存中,因為Heroku的工作人員可能在完全不同的計算機上。 您需要在每個工作程序中運行此代碼,或將數據存儲在任何進程都可以讀取的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM