我有一个烧瓶应用程序,我想通过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