即使语法错误,也保持simpleserver活动

moo*_*odh 4 python wsgi werkzeug flask

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

app = Flask(__name__)
app.run(host='0.0.0.0', debug=True, use_debugger=True, passthrough_errors=False);
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*ood 5

我刚刚发布了一个Flask-Failsafe扩展来解决这个问题.

我一直打这个,然后跑过你的帖子寻找解决方案.经过一些实验,我破解了一个装饰器,你可以用它来包装你的初始化代码,这样如果它失败了,重新加载器就会继续工作.看看它,让我知道你的想法.


Ros*_*nko 3

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

  1. 语法错误
  2. 例外情况

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

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

>>> try:
...     exec('x===6')
... except SyntaxError:
...     print('Hello!')
...
Hello!
Run Code Online (Sandbox Code Playgroud)

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