Gunicorn未能加载Flask应用程序

我有一个烧瓶应用程序,我想通过Gunicorn服务。

我正在使用virtualenv和python3。 如果我激活我的venv cd到我的应用程序库目录然后运行:

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我只有文件'default'。 在网站启用,我没有文件。

在我的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我有以下内容:

 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 

在我的settings.py在应用程序目录

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

从virtualenv里面,如果我跑

 print(sys.path) 

我find了这个virtualenv的Python和站点包的path。

从我读过的启动gunicorn它只是安装它和运行gunicorn mysite:应用程序的问题

从mysite的父目录运行gunicorn我得到相同的失败,find应用程序:'mysite',应用程序未能加载错误,但没有得到DEBUG …configuration()logging(因为我们明显在错误的目录开始)。 从mysite / mysite运行gunicorn(显然是错误的)我得到和exception在工作进程ereor,ImportError:没有名为'mysite'的模块。

任何线索,我怎么能得到gunicorn运行?

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

 gunicorn "mysite:create_app()" 

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

 gunicorn "mysite:create_app('production')" 

在内部,这相当于:

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

或者,您可以使用单独的文件进行设置。 在你的情况下,你已经在manage.py初始化一个app

 gunicorn manage:app