为什么服务器出错而不是开发中的错误?

时间:2017-04-05 23:42:00

标签: python-3.x flask flask-admin

所以我想知道只在生产中发生的服务器错误(当应用程序在生产和开发之间相同时)。

因此,使用Flask-Admin,我显示了一个基本的CRUD界面,模型视图主要依赖于模型的__repr__方法在列表视图中提供可读的字符串。在生产中(新的应用程序,与dev相同的数据),当__repr__方法无意中做了一些愚蠢的事情时,我收到服务器错误。在开发中,忽略或忽略相同的愚蠢行为。

例如:

MODEL:

class Author(db.Model):
    first_name = db.Column(db.String(50), nullable=True)
    middle_name = db.Column(db.String(50), nullable=True)
    last_name = db.Column(db.String(50), nullable=True)
    # ...

    def __repr__():
        return '{}'.format(' '.join([self.first_name, self.middle_name, self.last_name]))   # EDITED: Checked repository and I did have the arguments correct -- just wrote this off the top of my head.

__ repr __()在这种情况下,当名字,中间名或姓氏为NULL时,仅在服务器上(在apache上为wsgi)导致错误。它尝试使用join连接NULL和String,从而导致某些"期望字符串的变体,得到NULL"被提升。

但是,在开发服务器上,我从未看到这些错误(也没有任何警告)。

我已经改变了这个repr方法,以便在连接之前检查名字,中间名和姓氏,但我不知道为什么错误发生在生产(wsgi应用程序)中而不是在开发中(flask dev服务器)或者cherrypi服务器)。

那么,有什么想法吗?这两种情况有什么不同?

1 个答案:

答案 0 :(得分:1)

我有类似的问题。我通过将NULL转换为None来奇怪地解决了它。

例如,我创建了一个在所有视图中调用的函数,并将所有NULL值转换为None类型。无论是在开发还是在生产中,它都能完美运行。

我还在开发中使用了flask dev服务器,在生产中使用了wsgi和apache2 ......

为什么它有效我无法告诉你!