![](/img/trans.png)
[英]Flask session not persistent across requests in Flask app with Gunicorn on Heroku
[英]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.