基于以下结构:http://flask.pocoo.org/docs/patterns/packages/

我也尝试了这篇文章:Deploying Flask app to Heroku

我很难让它在heroku上工作。我通常会得到PORT在60秒内未设置错误。我读过其他SO文章,只是无法弄清楚我的项目结构是否错误或procfile。我尝试了除5000以外的其他端口。

这是我当前的项目结构:

/myapplication
    Procfile
    runserver.py
    /applicationfolder
        __init__.py
        views.py


这是我的Procfile

web: python runserver.py $PORT


这是我的runserver.py

from applicationfolder import app
app.run()

if __name__ == '__main__':
    import os
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)


这是我的init.py

import os

from flask import Flask
from flask import render_template, jsonify, request

app = Flask(__name__)

app.config.from_object('config')

import applicationfolder.views


从那里views.py运行。

这在本地与工头启动和python runserver.py一起使用,但不适用于heroku。我用PORT尝试了很多事情,但是即使使用与5000不同的PORT,端口似乎也没有设置。我认为这与我的项目结构有关。

最佳答案

app.run()在其中两次,正如您所指出的,这是在搞砸。 app.run()调用一个简单的纯Python开发服务器,以便您可以轻松地运行和/或调试脚本。

通过在模块级别调用它(在runserver.py中的导入下),您有效地尝试在加载python代码时启动开发服务器,然后在从Procfile调用该代码运行时启动开发服务器服务器已经开始使用它的默认值(最新版本的Flask正在从SERVER_NAME环境变量中提取相关的默认值)。通过在两个地方都使用它,您试图两次调用该方法。

您基本上希望直接加载模块(在这种情况下,请杀死“ if name ...”下的代码,或者在main下调用时使用代码,在这种情况下,请不要在模块加载时启动服务) 。

关于python - Heroku Flask-从教程部署“模块化”应用程序不起作用,领类开始在本地工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22416699/

10-09 07:24
查看更多