Gunicorn无法加载Flask应用程序

时间:2016-04-01 01:28:43

标签: python nginx flask gunicorn

我正在尝试通过Gunicorn服务的Flask应用程序。

我正在使用virtualenv和python3。如果我将我的venv cd激活到我的app base dir,那么运行:

gunicorn mysite:app

我明白了:

Starting gunicorn
Listening at http://127.0.0.1:8000
DEBUG:mysite.settings:>>Config()
...
Failed to find application: 'mysite'
Worker exiting
Shutting down: master
Reason: App failed to load

查看/ etc / nginx / sites-available我只有文件'默认'。在已启用网站的情况下,我没有文件。

在我的nginx.conf文件中,我有:

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

应用程序结构:

mysite    #this is where I cd to and run gunicorn mysite:app
--manage.py
--/mysite
----settings.py
----__init__.py

manage.py中的mysite我有以下内容:

logger.debug("manage.py entry point")
app = create_app(app_name)
manager = Manager(app)

if __name__ == "__main__":
    manager.run()

__init__.py档案中:

def create_app(object_name):
    app = Flask(__name__)
    #more setup here
    return app

在app目录中的settings.py

class Config(object):
    logger.debug(">>Config()")  #this logs OK so gunicorn is at least starting in correct directory

如果我运行

,从virtualenv内部
print(sys.path)

我为这个virtualenv找到了python和site-packages的路径。

从我读到的内容开始枪手,只需要安装它并运行gunicorn mysite:app

从mysite的父目录运行gunicorn我得到同样的找不到应用程序:' mysite',App无法加载错误,但没有得到DEBUG ... Config()记录(因为我们显然在错误的目录中开始)。从mysite / mysite运行gunicorn(显然是错误的)我在工作进程ereor中得到和Exception,ImportError:没有名为' mysite'。

的模块

关于我如何获得枪声的任何线索?

1 个答案:

答案 0 :(得分:29)

您将枪炮指向mysite:app,相当于from mysite import app。但是,app的顶级(__init__.py)级导入中没有mysite个对象。告诉gunicorn打电话给工厂。

gunicorn "mysite:create_app()"

您也可以将参数传递给调用。

gunicorn "mysite:create_app('production')"

在内部,这相当于:

from mysite import create_app
app = create_app('production')

或者,您可以使用单独的文件来执行设置。在您的情况下,您已在app初始化了manage.py

gunicorn manage:app