5

有没有办法配置 Flask 使用的简单服务器退出每个语法错误?

app = Flask(__name__)
app.run(host='0.0.0.0', debug=True, use_debugger=True, passthrough_errors=False);

目前我正在将此设置用于简单服务器。将 passthrough_errors 设置为 False 意味着大多数错误实际上使进程保持活动状态,以便我可以使用交互式调试器,但语法错误仍然会退出程序。我尝试了不同的配置值,但没有找到任何可行的方法。谢谢!

4

2 回答 2

5

我刚刚发布了一个Flask-Failsafe扩展来解决这个确切的问题。

我一直在打这个,并在早些时候看到你的帖子寻找解决方案。经过一番试验,我破解了一个装饰器,你可以用它来包装你的初始化代码,这样如果它失败,重新加载器将继续工作。检查一下,让我知道你的想法。

于 2012-09-15T00:51:16.793 回答
3

根据 Python 文档,有两种类型或错误:

  1. 语法错误
  2. 例外

语法错误是在解析期间产生的(此时您的代码实际上并未执行,因此您不可能捕获错误,因为解析时间不是运行时,当您的代码实际执行时)。

捕获语法错误的唯一方法是当它们发生在作为exec函数的参数给出的一段代码中时(执行 python 代码字符串):

>>> try:
...     exec('x===6')
... except SyntaxError:
...     print('Hello!')
...
Hello!

但是您必须记住,只有在您真正知道自己在做什么时才使用 exec()。完全不建议使用 exec() ,尤其是当它依赖于用户输入时。

于 2012-08-06T18:26:25.617 回答