为什么生产中服务器错误,但在开发中没有?



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

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

例如:

型:

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)上导致错误。它尝试将 NULL 和 String 与连接连接起来,从而导致引发"预期字符串,得到 NULL"的某种变体。

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

此后,我更改了此 repr 方法以在连接之前检查名字、中间名和姓氏,但我不知道为什么错误发生在生产(wsgi 应用程序)而不是开发中(烧瓶开发服务器或 cherrypi 服务器)。

那么,有什么想法吗?这两种情况有什么区别?

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

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

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

为什么它有效我不能告诉你!

最新更新