我不能用简单的烧瓶应用程序在heroku上运行gunicorn 应用程序非常简单,this app.py
app = Flask(__name__)
@app.route("/")
def say_hello(url):
return "Hello"
if __name__ == "__main__":
port = int(os.environ.get('PORT', 8888))
app.run(host='0.0.0.0',port=port)
通过heroku上的flask测试服务器,该应用运行良好 当我切换到使用gunicorn时,它会崩溃:
ImportError: No module named app.wsgiapp
我的要求.txt:
Flask==0.8
gevent==0.13.7
gunicorn==0.13.2
我尝试了从0.13.7到0.14.6的不同版本的gunicorn,但没有成功
程序文件:
web: gunicorn app:app -w 4 -b 0.0.0.0:$PORT
运行命令:
heroku logs
给予
←[33m2012-08-09T21:08:02+00:00 app[web.1]:←[0m ImportError: No module named app.
wsgiapp ←[33m2012-08-09T21:08:02+00:00 app[web.1]:←[0m entry = __import__(self.modul
e_name, globals(),globals(), ['__name__'])
有什么需要帮忙的吗
谢谢
乔
我终于想出了这个办法。
这基本上只是一个路径问题。如果根据您的设置以错误的顺序导入某些模块(如os和sys),则会导致Gunicorn查找app.wsgiapp模块的错误包。(不要与烧瓶中的app.wsgi_app功能混淆)
正确的导入顺序将根据您的设置而有所不同,但基于我所能得到的结果,经验法则是确保在导入os模块之前先导入sys模块。
除此之外,假设配置的其余部分是正常的(如上所述),您不应该有任何问题。
注:这只是一个问题的英雄与古尼孔。这与他们的PYTHONPATH和模块搜索路径是如何设置的有关。我不知道具体原因,但这只是生产环境所必需的,无论模块导入顺序如何,本地设置都可以正常工作。
在我的例子中,我在顶级文件夹中有一个
gunicorn.py
文件,从而得到了这个错误。这与Heroku上安装的gunicorn库发生冲突。所以导致问题的run命令是:
引发以下错误:
而在
mv gunicorn.py gunicorn_config.py
之后,它可以很好地处理:我在把Ubuntu升级到14.04lts时遇到了这个问题。
由于某种原因,
gunicorn
未能获取正确的python路径来解析wsgi模块。现在,我通过通过
--pythonpath
参数(文档化的here)显式地将python路径声明为gunicorn
,解决了这个问题。例如:
相关问题 更多 >
编程相关推荐