Python 即使出现语法错误,也要保持simpleserver处于活动状态

Python 即使出现语法错误,也要保持simpleserver处于活动状态,python,flask,wsgi,werkzeug,Python,Flask,Wsgi,Werkzeug,有没有一种方法可以配置Flask用于不退出每个语法错误的简单服务器 app = Flask(__name__) app.run(host='0.0.0.0', debug=True, use_debugger=True, passthrough_errors=False); 目前,我正在为简单服务器使用此设置。 将passthrough_errors设置为False意味着大多数错误实际上使进程保持活动状态,以便我可以使用交互式调试器,但语法错误仍然会退出程序。我尝试了不同的配置值,但没有找到任

有没有一种方法可以配置Flask用于不退出每个语法错误的简单服务器

app = Flask(__name__)
app.run(host='0.0.0.0', debug=True, use_debugger=True, passthrough_errors=False);
目前,我正在为简单服务器使用此设置。
将passthrough_errors设置为False意味着大多数错误实际上使进程保持活动状态,以便我可以使用交互式调试器,但语法错误仍然会退出程序。我尝试了不同的配置值,但没有找到任何有效的配置值。谢谢

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

  • 语法错误
  • 例外情况
  • 语法错误是在解析时产生的(此时代码没有实际执行,因此您不可能捕获错误,因为解析时不是运行时,代码实际执行时)

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

    但您必须记住,只有在真正了解自己的工作时才使用exec()。不建议使用exec(),尤其是当它依赖于用户输入时。

    我刚刚发布了一个扩展来解决这个问题


    我一直都在点击这篇文章,并在早些时候浏览了你的帖子,寻找解决方案。经过一段时间的实验,我破解了一个装饰程序,你可以用它来包装你的初始化代码,这样如果它失败了,重新加载程序将继续工作。查看并让我知道您的想法。

    那么真的没有办法让服务器保持活动状态吗?继续重新启动服务器似乎是一个非常烦人的问题。在Python中,语法错误只是另一种异常类型。您可以在调用exec()时捕获它们,但也可以在导入时捕获它们。只需在try/except中包装您的导入,您就可以在那里捕获SyntaxError。嗨!我刚刚试过,它似乎在工作,但遗憾的是,我已经转向更多的要求,这需要gunicorn正常工作。用普通的python app.py用gevent socketio构建东西是很困难的,就我所见,我无法让gunicorn支持代码重新加载。不过,它可以与标准设置一起使用!相关的:
    >>> try:
    ...     exec('x===6')
    ... except SyntaxError:
    ...     print('Hello!')
    ...
    Hello!