在gunicorn上部署flask应用程序时,module对象没有属性

2024-10-03 02:37:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将我的Flask应用程序部署到gunicorn,我得到以下错误。在

AttributeError: 'module' object has no attribute 'MyTopics'

当我简单地运行服务器Flask服务器时,一切正常:

^{pr2}$

但是当我在gunicorn下运行它时,我得到了AttributeError

gunicorn -c http_server.config http_server.server:app

加载我的服务器应用程序如下所示:

import logging
import sys
import os
import json
import time
from functools import wraps

from flask import Flask, request, jsonify

from my_lda import MyTopics

import config

logger = logging.getLogger(__name__)
app = Flask(__name__)

class Server(object):
    def __init__(self, lda_model_path):
        self.lda_model_path = lda_model_path
        self.lda_model = self.load_to_lda_model()

    def load_to_lda_model(self, path=None):
        """
        load the lda model from the specific path
        """

        if path is None:
            path = self.lda_model_path

        logger.info("loading LDA model from %r" % path)
        lda_model = MyTopics.load(path)
        logger.info("loaded LDA model %s", lda_model)
        return lda_model

logging.basicConfig(format='%(processName)s %(process)s:-%(asctime)s : %(levelname)s : %(module)s:%(lineno)d : %(funcName)s(%(threadName)s) : %(message)s')
logging.root.setLevel(level=logging.INFO)
logging.info("running %s" % ' '.join(sys.argv))

if 'MODEL_PATH' in os.environ:
    path = os.environ['MODEL_PATH']
else:
    path = config.MODEL_FILE_PATH
app.config['server'] = Server(path)

if __name__ == '__main__':
    app.run()

调用负载基于gensim.utils.SaveLoad,但我也试过标准酸洗,但没有区别。在

到目前为止,我的想法是:gunicorn可以运行不同的Python(我是从同一个virtualenv启动它)吗?gunicorn是否可能看不到通过pip install -e .安装的某些包

编辑:

添加项目结构:

  • http服务器
    • __初始值
    • 在服务器.py在
    • 在配置.py在
  • 数据
    • 在型号.pkl在
  • __初始值
  • 我的_lda.py公司在
  • 在设置.py在

Tags: pathfrompyimportselfconfigappflask