【问题标题】:Openshift vs localhost errors and error handlingOpenshift vs localhost 错误和错误处理
【发布时间】:2015-11-24 01:11:12
【问题描述】:

我可以在本地和在 openshift 上成功运行下面的代码,但结果却大不相同。当我在两个浏览器中加载“/”时,我看到代码正在运行。

当我在浏览器中加载“/main”时,它在本地工作,并在 openshift 中引发 500 错误(没有调试信息)。

当我在浏览器中加载“/error”时,我会在本地获取调试信息,而在 openshift 中再次获取 500。

如何在 openshift 上查看调试信息而不是无用的错误消息?

import watercore
from flask import Flask
app = Flask(__name__)

@app.errorhandler(404)
def page_not_found(e):
    return '404'

@app.errorhandler(500)
def errorhandle(e):
return '500'

@app.route('/error')
'force a 500 error'
def testerrors(e):
    return watercore.thisdefinitiondoesntexist()

@app.route('/')
def index():
    return 'working'

@app.route('/main')
def mainpage():
    return watercore.listall()

@app.route('/site/<sitename>')
def site(sitename):
    if watercore.listall(sitename) == True:
        return sitename

if __name__ == '__main__':
    app.debug = True
    app.run()

【问题讨论】:

  • 你是如何在 openshift 上部署的?你关注this了吗?
  • 是的,我已经部署了。不,我上传了在这里找到的示例github.com/openshift/flask-example 并对其进行了修改。

标签: python-2.7 flask openshift


【解决方案1】:

Openshift 可能使用wsgi 运行您的应用程序,因此您的main 永远不会运行。要启用调试,请将其设置在 if __name__ == '__main__': 之外。

def create_app():
    app = Flask(__name__)
    app.debug = True
    return app

app = create_app()

请注意,您永远不应该为实际的生产应用程序这样做。

【讨论】:

  • 我将 app.debug = true 拉了几行,得到 '500' 作为对错误的响应。然后我注释掉了我的 500 代码错误处理程序并返回到一个无用的内部服务器错误消息。
【解决方案2】:

我在烧瓶快速入门中找到了这个:

Attention

Even though the interactive debugger does not work in forking
environments (which makes it nearly impossible to use on production 
servers)

这让我相信调试器根本无法在 openshift 上运行。

我已经切换到 django 了!

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 2017-04-29
    • 2011-10-27
    • 1970-01-01
    • 2017-11-17
    • 2013-10-03
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多